SharedPreference与PreferenceActivity使用
SharedPreference:
创建:
SharedPreferences settings = this.getSharedPreferences("TestXML", 0);
这四种模式前面介绍使用文件方式保存数据时已经讲解过。如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
Context.MODE_PRIVATE ?MODE_MULTI_PROCESS
写:
?
? ? ? ?以键值<String Key,String Value> 方式加入数据
? ? ? ?SharedPreferences.Editor localEditor = settings.edit();?
? ? ? ?localEditor.putBoolean("ShowNote", false);
? ? ? ?IocalEditor.commit();
?
读:
?String str = settings.getString("ShowNote", "");
?
?
PreferenceActivity:
1.在设置界面中所有的内容会自动读和写,当PreferenceActivity上的View有所更改时,系统会自动将对应的值更新到XML配置文件中,该文件可以在android 的 file explorer 中的 data/data/"yourPageName"/shared_prefs/"yourpageName"_prefenrences.xml中找到。“yourpageName”表示你项目所在的包。
?
2.如果要其他地方读配置PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext())取得一个SharedPreference。
?
?
3.还有一个重要的问题,就是如何响应PreferenceActivity的操作。其实只要重写PreferenceActivity的 ?onPreferenceTreeClick的方法就可以了,通过参数preference来判断是对那一个元素
进行的,并根据需要进行操作。?
@Override?
public boolean onPreferenceTreeClick(PreferenceScreen?
preferenceScreen,?
? ? Preference preference) {?
? return false;?
}
?
也可每个看成是普通的控件然后加监听。
?
?
?
?
getPreferences():?另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。
getSharedPreferences():获取到作用域是本应用程序的preference
getDefaultSharedPreferences():获取到全局作用域的preference通
?
过Context.getSharedPreferences()方法来读写数值,这个方法通过设置name来使得同一个程序内的其它模块共享数据。如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持数据私有
?