以案例说明SharedPreferences的基本用法

       以案例说明SharedPreferences的基本用法_第1张图片 以案例说明SharedPreferences的基本用法_第2张图片 以案例说明SharedPreferences的基本用法_第3张图片 以案例说明SharedPreferences的基本用法_第4张图片 以案例说明SharedPreferences的基本用法_第5张图片
这是我正在开发的一个软件所用到的,想把源代码全粘上,感觉不合适太多了.抱歉哈,讲讲主要的.
先看效果。如上图,说明一下步骤啊。
点击图上按钮,弹出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.其余按钮也是这样解决的.


你可能感兴趣的:(java,存储,的基)