SharePReferences保存的數據主要是類似配置信息格式的數據,因此他保存的數據只要是簡單類型的key-value對。 SharePreferences接口主要負責讀取應用程序的 Preferences 數據,他提供了如下來訪問SharedPreferences中的key-value對
boolean contains(String key)//:判斷SharePreferences是否包含特定key的數據。 abstract Msp<String,?>getAll()//:獲取SharePreferences數據里全部的key-value對。 boolean getXxx(String key,xxx defValue) //獲取SharePreferences數據里指定key對應的value.如果該key 不存在,則返回默認值defValue,其中xxx可以是boolean ,float,int,long,string等各種基本類型的值。SharePreferences本身沒有提供寫入數據的能力,而是通過SharePreferences的內部接口,SharePreferences調用edit()方法即可獲得它所對應的Editor對象,Editor提供了如下方法來向SharePreferences寫入數據
SharePreferences.Editor clear()//清空SharePreferences里所有數據SharePreferences.Editor putXxx(String key,xxx value)//向SharePreferences存入指定的key對應的數據SharePreferences.Editor remove(String key)//刪除SharePreferences里指定的key所對應的數據boolean commit()//當Editor編輯完成后,調用該方法提交修改。SharePreferences本身只是一個接口所以不能通過new 直接創建 只能通過Context提供的getSharePreferences(String name,int mode) 方法來獲取SharePreferences實例。 其中mode的參數有下面幾種: MODE_PRIVATE:指定該SharePreferences數據只能被本應用程序讀寫。 MODE_WORLD_READABLE:指定該SharePreferences數據能被其他應用程序讀,但是不能寫。 MODE_WORLD_WRITEABLE:指定該SharePreferences數據能被其他應用程序讀寫
import android.annotation.TargetApi;import android.content.SharedPreferences;import android.icu.text.SimpleDateFormat;import android.os.Build;import android.support.annotation.RequiresApi;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import java.util.Date;public class MainActivity extends AppCompatActivity { SharedPreferences sharedPreferences; SharedPreferences.Editor editor; private int i=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 sharedPreferences=getSharedPreferences("crzyity",MODE_PRIVATE); editor=sharedPreferences.edit(); Button read=(Button)findViewById(R.id.read); Button write=(Button)findViewById(R.id.write); read.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //讀取字符串 String time=sharedPreferences.getString("time",null); int randNum=sharedPreferences.getInt("rand",0); String result=time==null ? "暫時還沒有數據":"寫入的時間為:"+time+"/n上次的" + "隨機數是:"+randNum; Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show(); } }); write.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { i++; TextView textView=new TextView(MainActivity.this); LinearLayout linearLayout=(LinearLayout)findViewById(R.id.activity_main); textView.setText("你好呀"+i); linearLayout.addView(textView); editor.putString("time","你好+++++++"+textView.getText().toString()); editor.putInt("random",(int)(Math.random()*100)); editor.commit(); } }); Button button_1=new Button(MainActivity.this); button_1.setText("清除"); button_1.setHeight(2); button_1.setWidth(1); LinearLayout layout=(LinearLayout)findViewById(R.id.activity_main); layout.addView(button_1); button_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { editor.remove("time"); editor.commit(); } }); }}新聞熱點
疑難解答