java preference.app_Android(java)学习笔记117:SharedPreferences(轻量级存储类)

1.SharedPreferences是Android平台上一个轻量级的存储类,简单的说就是可以存储一些我们需要的变量信息。2个activity 之间的数据传递除了可以他通过intent来传递数据,还可以使用SharedPreferences来共享数据的方式。SharedPreferences生成的是xml文件。

SharedPreferences 用法很简单,如果你想要编辑SharedPreferences中的内容就需要用到Editor对象。

2.下面使用一个案例来进一步理解SharedPreferences和Editor

(1)下面以一个登陆界面的设计为例,分析其和SharedPreferences有关代码,设计简单的界面如下图所示。

5d3ea6f0fea744fd5d757a8871c81084.png

(2)下面这个方法可以实现保存用户名和密码,数据存放很像Map集合,以键值对的方式存放。关键代码:

e37b19200c6fbfe3391fff131dc4c6df.png

SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE)其中"config"文件名(可以自己命名),MODE_PRIVATE为文件的权限(这里是私有文件);

Editor editor = sp.edit()获得编辑这个文件的编辑器;

editor.putString("username", str_username);利用编辑器编辑内容;

editor.commit()调用这个方法提交保存数据。

附加备注:

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

(3)下面这个方法可以实现读取出存放的数据,通过键得到值,并且知道填充到对应的编辑框。关键代码只有两句:

bd0f209aedb2cd26573353af622e0d96.png

SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE)其中"config"文件名,MODE_PRIVATE为文件的权限;

String str_username = sp.getString("username", "")和String str_password = sp.getString("password", "")都是取出对应的数据。

(4)分析:创建对象时有到getSharedPreferences(name, mode)方法,参数name其实是文件名,mode其实是文件权限。这个文件是自动生成的一个xml文件:

c1e2c830d1faa5b7bfde7db06f496cac.png

(5)可以打开这个xml文件文件,或者有adb shell cat查看这个文件内容,可见用这种方法特殊字符也是可以存放的。

020669dcc4054b85abdf071bed206278.png

3. SharedPreferences使用步骤:

>用来保存用户的配置信息和简单的数据步骤:

1. 声明 SharedPreferences sp;

2. 初始化 sp = this.getSharedPreferences("文件名", 0);//0代表的是私有

3. 获取sp的编辑器 Editor editor = sp.edit();

4. 存储数据 editer.putString() putBoolean putLong

5. 最后一步重要,一定要记得commit() 数据才被保存

代码案例:

packagecom.itheima.setting;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.SharedPreferences;importandroid.content.SharedPreferences.Editor;importandroid.view.Menu;importandroid.widget.CheckBox;importandroid.widget.CompoundButton;importandroid.widget.CompoundButton.OnCheckedChangeListener;importandroid.widget.Toast;public class MainActivity extendsActivity {//方便的数据保存的api 生成一个xml文件用来保存数据

SharedPreferences sp;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);//config 是文件名 0 访问模式私有

sp = this.getSharedPreferences("config", 0);

CheckBox cb=(CheckBox) findViewById(R.id.cb);//回显数据

boolean status = sp.getBoolean("status", false);//第一个是key 第二个参数是默认值

cb.setChecked(status);

cb.setOnCheckedChangeListener(newOnCheckedChangeListener() {

@Overridepublic void onCheckedChanged(CompoundButton buttonView, booleanisChecked) {

Toast.makeText(MainActivity.this, "勾选状态:"+isChecked, 0).show();//获取编辑器i

Editor editor =sp.edit();

editor.putBoolean("status", isChecked);

editor.commit();//数据库的事务 ,提交数据。把数据保存起来

}

});

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值