SharedPreferenced是使用键值对的方式来存储数据。保存一条数据时,需要给这条数据一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。存的是整形取出还是整形。存入字符串取出仍然是字符串。
一、把数据存到SharedPreferenced中去
1、Context类重的getSharedPreferenced()方法接收两个参数第一个是文件名称,第二个是指定操作模式
2、Activity类中的getPreferences()方法与上一个类似,但是这种方法会将当时活动的类名作为SharedPreferenced的文件名
3、PreferenceManager类中的getDefaultSharedPreferences()方法这是一个静态方法,接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferenced文件。得到SharedPreferenced对象后就可以开始向SharedPreferenced文件中存储数据了,过程分为三步
(1)调用SharedPreferenced对象中的edit()方法,获取一个SharedPreferenced.Editor对象
(2)向SharedPreferenced.Editor对象中添加数据,添加XXX类型数据就是putXXX,eg:putString,putBoolean
(3)调用apply()方法将添加的数据提交,完成数据存储操作
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button saveData = findViewById(R.id.save_data);//存储数据
saveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","wangkangli");
editor.putInt("age",18);
editor.putBoolean("marry",false);
editor.apply();
}
});
Button restoreData = findViewById(R.id.restore_data);//读取数据
restoreData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name","");
int age = pref.getInt("age",0);
boolean marry = pref.getBoolean("marry",false);
Toast.makeText(MainActivity.this,"姓名:"+name+"年龄:"+age,Toast.LENGTH_SHORT).show();
}
});
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/save_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="save data"/>
<Button
android:id="@+id/restore_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="restore data"/>
</LinearLayout>