SharedPreferences存储数据

          SharedPreferences用于保存简单的基本类型的数据,比如字符串,整数等,与Map十分相似,都是使用key-value对来存储和获取数据,SharedPreferences本身就是一个接口,无法直接创建SharedPreferences的实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,该方法中name表示要操作的xml文件名,第二个参数具体如下:

Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。

Context.MODE_WORLD_READABLE:  指定该SharedPreferences数据能被其他应用程序读,但不能写。

Context.MODE_WORLD_WRITEABLE:  指定该数据能被其他应用程序读,写

       获取 SharedPreferences的方法如下:

SharedPreferences preferences;

preferences = getSharedPreferences(FILE_NAME,MODE_PRIVATE);

      写入数据:

     SharedPreferences接口本身并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。Editor提供了如下方法来向SharedPreferences写入数据。

         

SharedPreferences.Editor clear():清空SharedPreferences里所有数据。

SharedPreferences.Editor putxxx(String key,xxx value):用于添加键值对,这里的xxx可以是Boolean,float,interesting,String等各种基本类型的值

SharedPreferences.Editor remove(String key):删除key对应的数据。

boolean commit():提交

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

SharedPreferences.Editor editor;//声明edit

editor = preferences.edit();//获取对象

Button write = (Button) findViewById(R.id.write);//绑定按钮

 write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                editor.putInt("age",20);
                editor.commit();
            }
        });

    读取数据:

         SharedPreferences寻找键来读取对应的数据,与Map的读取方式基本相同,主要的方法有:


        boolean contains(String key):判断是否包含特定key的数据。

        abstract Map<String,?> getAll():获取全部的key-value对。

        boolean getxxx(String key,xxx defValue):获取指定key的数据,如果key不存在,则返回defValue。

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

read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int age = preferences.getInt("age",0);//若age不存在,值为0;
                String result = age+"";
                Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
            }
        });
最后,附上完整代码

public class MainActivity extends AppCompatActivity {

    private String FILE_NAME = "file_name";
    SharedPreferences preferences;
    SharedPreferences.Editor editor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        preferences = getSharedPreferences(FILE_NAME,MODE_PRIVATE);
        editor = preferences.edit();
        Button write = (Button) findViewById(R.id.write);
        Button read = (Button) findViewById(R.id.read);
        write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                editor.putInt("age",20);
                editor.commit();
            }
        });
        read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int age = preferences.getInt("age",0);
                String result = age+"";
                Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
            }
        });
    }
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值