android之知识点小结二
2013-08-19 20:54
155 查看
SharedPreferences的使用:
在这里也是偏向于使用android自带的SharedPreferences管理机制,简要说明使用流程,备忘:
首先在主activity里面初始化SharedPreferences,
上面则完成了对SharedPreferences的一系列操作,从初始化和注册监听器,监听变化,以及变化后做出相应操作,
那么是如何唤出SharedPreferences的设置界面,并且存储是如何实现的呢,
这里采用的是
就是在菜单里加一个prefs设置选项,点击它则启动定义的SharedPreferences设置界面,这个界面就直接继承PreferenceActivity,可以方便高效的实现Preference的存储和管理.代码如下:
代码是很简单的,只需要addPreferencesFromResource(R.xml.preferences);这个设置显示界面就可以了,
界面代码res/xml/preferences.xml:
整个界面是一个PreferenceScreen,第二行,是一个ListPreference,key就相当于id,也是键值对的key,实际存储之后就是一个键值对的键,在前面的initList里面
我们就是用prefs.getString("sort_order","name");去获取内容的,很明显这里用到的就是key,
title就是ListPreference的标题,summary是简单说明用法,效果如下,显示位置很明显就体会到其用途了.
再有就是所显示的具体内容了,ListPreference里的选项是从哪里来的呢,来自
android:entries="@array/sort_names"
这个数组定义了要显示的内容,而下一行
android:entryValues="@array/sort_clauses"
这行定义了对应着你所选的选项,存储到SharedPreferences里面的内容,整个数组的资源代码如下
比如我们在选择时,选择了第一个By Name, Ascending,那么系统自动帮你把name ASC存储到SharedPreferences里面,即
所存储的这条SharedPreferences为(SharedPreferences的存储方式就是xml文件的形式存储)
<string name="sort_order">name ASC</string>
那么在看前面的这行代码
很明显,这个prefs所获取到的内容就是"name ASC",这行代码其实就是把参数传递到数据库帮助类里用来获取内容,而这个获取到的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 { @Override public 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"> <ListPreference android: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文件的形式存储)
<string name="sort_order">name ASC</string>
那么在看前面的这行代码
model=helper.getAll(where, prefs.getString("sort_order", "name"));
很明显,这个prefs所获取到的内容就是"name ASC",这行代码其实就是把参数传递到数据库帮助类里用来获取内容,而这个获取到的SharedPreferences就是设置的排序方式
相关文章推荐
- Android项目小结---闹铃备忘录小开发知识点(附有:源码下载)
- android 知识点小结
- 2013-05-09 小结 Android知识点
- 2013-05-10 小结 Android的一些知识点
- 2016年末,Android岗位BAT等大厂面试题知识点小结(一)Android基础部分
- android之知识点小结一
- Android 知识点小结
- android fragment知识点小结
- Android 百度地图(三):知识点小结
- android之知识点小结二
- Android学习之路小结1(加一些小知识点)
- Android 常见面试 知识点小结
- Android 拼图游戏知识点小结
- Android知识点小结
- android 学习随笔二十八(应用小知识点小结 )
- 初学Android快速上手经验(自我小结)
- Android基础总结之七:Android.mk小结
- android EditText相关的知识点汇总
- android工作小结
- Java知识点练习小结(四)