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