SharedPreferences的使用:

在这里也是偏向于使用android自带的SharedPreferences管理机制,简要说明使用流程,备忘:

首先在主activity里面初始化SharedPreferences,

SharedPreferences prefs=null;...@Override public void onCreate(Bundle savedInstanceState) {...prefs=PreferenceManager.getDefaultSharedPreferences(this);.../*注册SharedPreferences的监听器,一旦SharedPreferences发生变化,则触发监听器,进行一些操作,比如这里是通过SharedPreferences设置列表的排序方式,一旦排序方式的设置改变,则*SharedPreferences的存储内容改变,则触发监听器,进行列表的重新初始化*/prefs.registerOnSharedPreferenceChangeListener(prefListener);...}...private SharedPreferences.OnSharedPreferenceChangeListener prefListener=  new SharedPreferences.OnSharedPreferenceChangeListener() {  public void onSharedPreferenceChanged(SharedPreferences sharedPrefs, String key) {   if (key.equals("sort_order")) {//这里就是监听器的具体操作,通过判断是某一个SharedPreferences的变化,进行相应操作    initList();//重新初始化列表   }  } };..private void initList() {...model=helper.getAll(where, prefs.getString("sort_order", "name"));//在这里需要通过prefs.getString("sort_order", "name")获取SharedPreferences中存取的具体内容,即采取何种排列方式,如果结果为空,则返回"name",按姓名排序...}

上面则完成了对SharedPreferences的一系列操作,从初始化和注册监听器,监听变化,以及变化后做出相应操作,

那么是如何唤出SharedPreferences的设置界面,并且存储是如何实现的呢,
这里采用的是

  if (item.getItemId()==R.id.prefs) {   startActivity(new Intent(this, EditPreferences.class));  }

就是在菜单里加一个prefs设置选项,点击它则启动定义的SharedPreferences设置界面,这个界面就直接继承PreferenceActivity,可以方便高效的实现Preference的存储和管理.代码如下:

public class EditPreferences extends PreferenceActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.preferences);//这个方法的实现就内置了SharedPreferences的存储方法,所以无需我们自己再去存储SharedPreferences}}

代码是很简单的,只需要addPreferencesFromResource(R.xml.preferences);这个设置显示界面就可以了,

界面代码res/xml/preferences.xml:

<PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android"><ListPreferenceandroid:key="sort_order"android:title="Sort Order"android:summary="Choose the order the list uses"android:entries="@array/sort_names"android:entryValues="@array/sort_clauses"android:dialogTitle="Choose a sort order" /></PreferenceScreen>

整个界面是一个PreferenceScreen,第二行,是一个ListPreference,key就相当于id,也是键值对的key,实际存储之后就是一个键值对的键,在前面的initList里面

model=helper.getAll(where, prefs.getString("sort_order", "name"));

我们就是用prefs.getString("sort_order","name");去获取内容的,很明显这里用到的就是key,

title就是ListPreference的标题,summary是简单说明用法,效果如下,显示位置很明显就体会到其用途了.

再有就是所显示的具体内容了,ListPreference里的选项是从哪里来的呢,来自

android:entries="@array/sort_names"

这个数组定义了要显示的内容,而下一行

android:entryValues="@array/sort_clauses"

这行定义了对应着你所选的选项,存储到SharedPreferences里面的内容,整个数组的资源代码如下

<?xml version="1.0" encoding="utf-8"?><resources><string-array name="sort_names"><item>By Name, Ascending</item><item>By Name, Descending</item><item>By Type</item><item>By Address, Ascending</item><item>By Address, Descending</item></string-array><string-array name="sort_clauses"><item>name ASC</item><item>name DESC</item><item>type, name ASC</item><item>address ASC</item><item>address DESC</item></string-array></resources>

比如我们在选择时,选择了第一个By Name, Ascending,那么系统自动帮你把name ASC存储到SharedPreferences里面,即

所存储的这条SharedPreferences为(SharedPreferences的存储方式就是xml文件的形式存储)

<stringname="sort_order">name ASC</string>

那么在看前面的这行代码

model=helper.getAll(where, prefs.getString("sort_order", "name"));

很明显,这个prefs所获取到的内容就是"name ASC",这行代码其实就是把参数传递到数据库帮助类里用来获取内容,而这个获取到的SharedPreferences就是设置的排序方式

更多相关文章

  1. Android横竖屏切换不重新调用onCreate()
  2. Android(安卓)O添加Settings设置项的方法
  3. Android中View图形绘制基础
  4. android UI进阶之仿iphone的tab效果 (Android九宫格)
  5. Android(安卓)UI 之TextView控件属性列表
  6. android中Invalidate和postInvalidate的区别
  7. Android中app的请求抓包工具 Fiddler 详解
  8. Android(安卓)React Native自定义组件的流程
  9. Android笔记Android基于事件监听器处理机制

随机推荐

  1. 7.高级UI组件
  2. 漂亮的Android加载动画
  3. android 7.0 user版本调试方法
  4. android SharePreference适用任何基本类
  5. 802.11(wifi)中SSID、BSSID、ESSID的区别
  6. com.android.cts.devicepolicy.ManagedPr
  7. android 扫描sdcard下的图片
  8. RF Analyzer for Android(安卓)安卓平台
  9. android 拍照和上传
  10. List.addAll(null);