sharedPreferences使用的是键值对的方式存储数据。
1.Android中三种获取sharedPreferences的方式
1)Context 类中的getSharedPreferences()方法,该方法接受,第一个参数用于指定SharedPreferences 文件的名称,第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE 和MODE_MULTI_PROCESS。
2)Activity 类中的getPreferences()方法,和上面的方法类似
3)PreferenceManager 类中的getDefaultSharedPreferences()方法 这是一个静态方法,它接收一个Context 参数。
获取sharedPreference之后,通过三步向其中添加数据
1.调用sharedPreference对象的edit()方法,获取SharedPreferences.Editor对象。
2.向Editor对象中添加数据。如,String类型数据用putString()方法。
3.通过调用commit()方法将添加的数据提交,从而完成数据存储操作。
获取sharedPreference中的数据的方法更加简单
1.获取sharedPreferens对象,
2.通过对象调用getString()方法,该方法传入两个参数,第一个参数是键值,第二个参数是该值得默认值。
现在代码实现:
界面直接写连个button,一个用于存储数据,一个用于取出数据。
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 3 android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 4 android:paddingRight="@dimen/activity_horizontal_margin" 5 android:paddingTop="@dimen/activity_vertical_margin" 6 android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" 7 android:orientation="vertical" 8 > 9 10 11 <Button 12 android:layout_width="match_parent" 13 android:layout_height="wrap_content" 14 android:id="@+id/save_data" 15 android:text="save data" 16 /> 17 <Button 18 android:layout_width="match_parent" 19 android:layout_height="wrap_content" 20 android:id="@+id/get_date" 21 android:text="get date" 22 23 /> 24 <TextView 25 android:layout_width="match_parent" 26 android:layout_height="wrap_content" 27 android:lines="2" 28 android:id="@+id/text" 29 android:hint="result is here" 30 /> 31 </LinearLayout>
接着在.java文件中添加如下代码
1 package com.example.yqt.sharedpreferencestest; 2 3 import android.content.SharedPreferences; 4 import android.support.v7.app.AppCompatActivity; 5 import android.os.Bundle; 6 import android.util.Log; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.view.View; 10 import android.widget.Button; 11 import android.widget.TextView; 12 13 public class MainActivity extends AppCompatActivity { 14 15 16 Button savadata; 17 Button getdata; 18 19 TextView text; 20 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_main); 26 27 savadata = (Button)findViewById(R.id.save_data); 28 savadata.setOnClickListener(new View.OnClickListener() { 29 @Override 30 public void onClick(View v) { 31 SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit(); 32 editor.putString("name","Tom"); 33 editor.putInt("age", 25); 34 editor.putBoolean("married", false); 35 editor.commit(); 36 } 37 }); 38 39 text = (TextView)findViewById(R.id.text); 40 41 getdata = (Button)findViewById(R.id.get_date); 42 getdata.setOnClickListener(new View.OnClickListener() { 43 @Override 44 public void onClick(View v) { 45 SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE); 46 String name = pref.getString("name", ""); 47 int age = pref.getInt("age", 0); 48 Boolean married = pref.getBoolean("married",false); 49 Log.d("MainActivity","name is "+name); 50 Log.d("MainActivity","age is "+age); 51 Log.d("MainActivity","married is "+married); 52 text.setText("name "+name+" age:"+age+" married:"+married); 53 } 54 }); 55 56 57 } 58 59 }
最后运行可以看到如下结果
这是保持后的数据导出的结果
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">Tom</string> <boolean name="married" value="false" /> <int name="age" value="25" /> </map>