SharedPreferences存储数据

╰半橙微兮° 2022-06-01 13:07 439阅读 0赞
  1. SharedPreferences用于保存简单的基本类型的数据,比如字符串,整数等,与Map十分相似,都是使用key-value对来存储和获取数据,SharedPreferences本身就是一个接口,无法直接创建SharedPreferences的实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,该方法中name表示要操作的xml文件名,第二个参数具体如下:
  2. Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。
  3. Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写。
  4. Context.MODE_WORLD_WRITEABLE: 指定该数据能被其他应用程序读,写
  5. 获取 SharedPreferences的方法如下:
  6. SharedPreferences preferences;
  7. preferences = getSharedPreferences(FILE_NAME,MODE_PRIVATE);
  8. 写入数据:
  9. SharedPreferences接口本身并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。Editor提供了如下方法来向SharedPreferences写入数据。
  10. SharedPreferences.Editor clear():清空SharedPreferences里所有数据。
  11. SharedPreferences.Editor putxxx(String key,xxx value):用于添加键值对,这里的xxx可以是BooleanfloatinterestingString等各种基本类型的值
  12. SharedPreferences.Editor remove(String key):删除key对应的数据。
  13. boolean commit():提交

例如,我们通过按钮点击来存储一个int类型的数据:

  1. SharedPreferences.Editor editor;//声明edit
  2. editor = preferences.edit();//获取对象
  3. Button write = (Button) findViewById(R.id.write);//绑定按钮
  4. write.setOnClickListener(new View.OnClickListener() {
  5. @Override
  6. public void onClick(View view) {
  7. editor.putInt("age",20);
  8. editor.commit();
  9. }
  10. });
  11. 读取数据:
  12. SharedPreferences寻找键来读取对应的数据,与Map的读取方式基本相同,主要的方法有:
  13. boolean contains(String key):判断是否包含特定key的数据。
  14. abstract Map<String,?> getAll():获取全部的key-value对。
  15. boolean getxxx(String key,xxx defValue):获取指定key的数据,如果key不存在,则返回defValue

我们通过另外一个按钮点击获取刚刚存过的数据:

  1. read.setOnClickListener(new View.OnClickListener() {
  2. @Override
  3. public void onClick(View view) {
  4. int age = preferences.getInt("age",0);//若age不存在,值为0;
  5. String result = age+"";
  6. Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
  7. }
  8. });

最后,附上完整代码

  1. public class MainActivity extends AppCompatActivity {
  2. private String FILE_NAME = "file_name";
  3. SharedPreferences preferences;
  4. SharedPreferences.Editor editor;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9. preferences = getSharedPreferences(FILE_NAME,MODE_PRIVATE);
  10. editor = preferences.edit();
  11. Button write = (Button) findViewById(R.id.write);
  12. Button read = (Button) findViewById(R.id.read);
  13. write.setOnClickListener(new View.OnClickListener() {
  14. @Override
  15. public void onClick(View view) {
  16. editor.putInt("age",20);
  17. editor.commit();
  18. }
  19. });
  20. read.setOnClickListener(new View.OnClickListener() {
  21. @Override
  22. public void onClick(View view) {
  23. int age = preferences.getInt("age",0);
  24. String result = age+"";
  25. Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
  26. }
  27. });
  28. }
  29. }

#

#

发表评论

表情:
评论列表 (有 0 条评论,439人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SharedPreferences存储

    不同于文件存储的方式,SharedPreferences 是使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就

    相关 SharedPreferences存储

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息