以案例说明SharedPreferences的基本用法

本文通过一个具体的应用案例,详细介绍了如何使用SharedPreferences进行数据的存储与读取。包括如何利用SharedPreferences.Editor来保存不同类型的值,以及如何从SharedPreferences中获取这些值。
      
这是我正在开发的一个软件所用到的,想把源代码全粘上,感觉不合适太多了.抱歉哈,讲讲主要的.
先看效果。如上图,说明一下步骤啊。
点击图上按钮,弹出dialog,在用户选择提醒方式后点击确定,然后回到activity,点击activity上的按钮,dialog会显示用户选择后的界面。
整个过程完整的说明了SharedPreferences的基本用法.
先说说它的基本知识吧
写数据:
SharedPreferences.Editor putxxx(String key,xxx value):xxx可以是很多基本数据类型,如int ,long ,string等.
读数据:
abstract Map<String,?>getAll():得到全部的key_value 值.
xxx getxxx(String key,xxx defultValue).:xxx可以是很多基本数据类型,如int ,long ,string等.
下面看下核心代码
先把按钮的状态写进去,因为按钮数量众多,且又属于有关键的相同属性的按钮(这句话能理解就理解不能理解就忽略),所以必须用map这种java的键值对的数据结构去存储.然后将整个map打进SharedPreferences中.
Map<String, String> map1 = null;//这是map1的声明<pre name="code" class="java"> map1 = new HashMap<String, String>();


switch1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

		
		@Override
		public void onCheckedChanged(CompoundButton arg0, boolean arg1) {

			if(arg1==true)//
			{
			
				map1.put("switch1", "0");//当switch1 打开时,将其状态"0"存入map1中,同时key=switch1,其他的按钮也是如此.
			}
			if(arg1==false)
			{
				map1.put("switch1", "1");
			}
		}
	});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
			   bool.writeboolean(map1);//将map1的全部打入
			}
		});
下面看看writeboolean函数
	public void writeboolean(Map<String , String> map)
	{
		 preferences=context.getSharedPreferences("boolean", Context.MODE_PRIVATE);//存到名为boolean的文档里
		 editor=preferences.edit();//这俩句是必须要有的
			for(Map.Entry<String, String> entry:map.entrySet())//map的循环格式
			{
			       String key=entry.getKey();
			       String s=entry.getValue();
			       Log.e(s, "--------->"+key);
				editor.putString(key, s);//把key and value 打到文件名为boolean里面
			}
		

		editor.commit();//开头和结尾固定的格式
	}
下面来看看readboolean函数
	public Map<String, ?> readboolean()
	{
		
	 preferences=context.getSharedPreferences("boolean", Context.MODE_PRIVATE)
}
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">map1=(Map<String, String>) bool.readboolean();</span>
	if (map1 != null && !map1.isEmpty())//判断非空.
	{
	if(map1.get("switch1").equal("0"))//为0,就把按钮设为开
		{
		switch1.setChecked(true);
		}
<span style="white-space:pre">	</span>else
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>
<span style="white-space:pre">		</span>switch1.setChecked(false);<span style="white-space:pre">	</span>
<span style="white-space:pre">		</span>}
}
注意不要把逻辑搞错了,0为true,1为false.其余按钮也是这样解决的.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值