为了引入这个概率 首先从需求说起 即:现有某Activity专门用于手机属性设置 那么应该如何做呢?
根据已学知识 很快一个念头闪过 即:Activity + Preference 组合 前者用于界面构建 后者用于设置数据存放 其实 这是正确的 但是 这会比较繁琐 因为 每个设置选项 都要建立与其对应的Preference
所以 现在有更好的选择了 那就是本文的主角:PreferenceActivity
从名字应该可以看出 其实 Activity 与 Perference 的混合物
还是从需求说起 常见属性设定 有哪几种方式:
1. CheckBox 用于 确定/取消 某项功能 如:是否静音 对应于:CheckBoxPreference 其在Preference 有一个选项与其自动绑定 下同
2. ListView 用于列出所有选择 如:铃声选择 列出所有声音供选择使用 对应于:ListPreference
3. 属性结合 用于列出一系列相关属性 如:所有与短消息有关的功能 对应于:PreferenceScreen 该项仅用于界面 故与Preference无关
界面 其实 讨论这个 比较鸡肋 大家自己试着运行就一目了然了 所以 觉得还是以步骤为主
鉴于PreferenceActivity使用 网络很多 故此略过 为了给自己备份 防止以后用到 大致叙述一下
[代码 步骤]
1. PreferenceActivity 界面比较特别 在 res/xml/setting.xml
Xml代码
1. <?xml version="1.0" encoding="utf-8"?>
2. <PreferenceScreen
3. xmlns:android="http://schemas.android.com/apk/res/android">
4. <CheckBoxPreference
5. android:key="autoBack"
6. android:title="自动回复"
7. android:summaryOn="开启"
8. android:summaryOff="关闭"
9. android:defaultValue="true"
10. />
11.
12. <PreferenceCategory android:title="SMS 助手">
13. <CheckBoxPreference
14. android:key="smsSilence"
15. android:title="静音"
16. android:summaryOn="开启"
17. android:summaryOff="关闭"
18. android:defaultValue="false"
19. />
20. <PreferenceScreen android:title="更多选项">
21. <CheckBoxPreference
22. android:key="cb21"
23. android:title="功能1"
24. android:summaryOn="开启"
25. android:summaryOff="关闭"
26. android:defaultValue="true"
27. />
28. <CheckBoxPreference
29. android:key="cb22"
30. android:title="功能2"
31. android:summaryOn="使用"
32. android:summaryOff="停用"
33. android:defaultValue="true"
34. />
35. <ListPreference
36. android:key="list1"
37. android:title="android forum"
38. android:summary="开发论坛"
39. android:dialogTitle="请选择论坛"
40. android:entries="@array/entries_list_preference"
41. android:entryValues="@array/entriesvalue_list_preference"
42. />
43. <EditTextPreference
44. android:key="et1"
45. android:title="EditTextPreference Sample"
46. android:summary="点击输入"
47. android:dialogTitle="输入设置"
48. android:defaultValue="Hello EditTextPreference"
49. />
50. </PreferenceScreen>
51. </PreferenceCategory>
52.
53. <PreferenceCategory android:title="其他选项">
54. <RingtonePreference
55. android:key="rt1"
56. android:title="RingtonePreference Sample"
57. android:summary="选择铃声"
58. />
59. </PreferenceCategory>
60. </PreferenceScreen>
2. 导入setting.xml
Java代码
1. addPreferencesFromResource(R.xml.settings);
emulator 运行截图:
点开"更多选项"
具体 请大家自己尝试之
3. 其实 关于PreferenceActivity 问题 基本结束了 但是 初次使用 会碰到一些坎坷 现一一讨论
4. 监听设定变化问题 普通布局里的监听 比较简单 先通过findViewById()获得目标View 再在其上注册监听器即可
但是 PreferenceActivity 并没有提供findViewById() 也就无法监听 那么 怎么做呢?
- 得到SharedPreferences 句柄
Java代码
1. sp = PreferenceManager.getDefaultSharedPreferences(this);
- 在 sp 之上注册改变监听器
Java代码
1. sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener(){
2.
3. @Override
4. //sharedPreferences:句柄
5. //key: 改变 键值
6. public void onSharedPreferenceChanged(
7. SharedPreferences sharedPreferences, String key) {
8. // TODO Auto-generated method stub
9.
10. if(key.equals("autoBack")){
11. Boolean autoBack = sharedPreferences.getBoolean("autoBack", false);
12. if(autoBack){
13. Log.d("TAG","autoBack: true!");
14. }
15. else {
16. Log.d("TAG","autoBack: false!");
17. }
18. }
19. }
20.
21. });
5. Preference 异地使用 即:PreferenceActivity 在一个应用程序 而别处应用程序可能也想改变该数据 怎么做呢?
- 通过getSharedPreferences() 得到SharedPreferences实例
Java代码
1. spc = this.getSharedPreferences("com.android.PreferenceActivity.Usage_preferences.xml", MODE_WORLD_READABLE );
- 取值
Java代码
1. Boolean autoBack = spc.getBoolean("autoBack", false);
- 赋值
Java代码
1. public void putValue(String key, Boolean value){
2. spe = spc.edit();
3. spe.putBoolean(key, value);
4. spe.commit();
5. }
就这样结束 似乎感觉不爽 所以决定加点料
- ListPreference 使用
Java代码
1. <ListPreference
2. android:key="list1"
3. android:title="android forum"
4. android:summary="开发论坛"
5. android:dialogTitle="请选择论坛"
6. android:entries="@array/entries_list_preference"
7. android:entryValues="@array/entriesvalue_list_preference"
8. />
Java代码
1. <?xml version="1.0" encoding="utf-8"?>
2. <resources>
3. <string-array name="entries_list_preference">
4. <item>www.anddev.org</item>
5. <item>www.eoeandroid.com</item>
6. <item>developer.android.com</item>
7. </string-array>
8. <string-array name="entriesvalue_list_preference">
9. <item>1</item>
10. <item>2</item>
11. <item>3</item>
12. </string-array>
13. </resources>
EditTextPreference 使用
Xml代码
1. <EditTextPreference
2. android:key="et1"
3. android:title="EditTextPreference Sample"
4. android:summary="点击输入"
5. android:dialogTitle="输入设置"
6. android:defaultValue="Hello EditTextPreference"
7. />
根据已学知识 很快一个念头闪过 即:Activity + Preference 组合 前者用于界面构建 后者用于设置数据存放 其实 这是正确的 但是 这会比较繁琐 因为 每个设置选项 都要建立与其对应的Preference
所以 现在有更好的选择了 那就是本文的主角:PreferenceActivity
从名字应该可以看出 其实 Activity 与 Perference 的混合物
还是从需求说起 常见属性设定 有哪几种方式:
1. CheckBox 用于 确定/取消 某项功能 如:是否静音 对应于:CheckBoxPreference 其在Preference 有一个选项与其自动绑定 下同
2. ListView 用于列出所有选择 如:铃声选择 列出所有声音供选择使用 对应于:ListPreference
3. 属性结合 用于列出一系列相关属性 如:所有与短消息有关的功能 对应于:PreferenceScreen 该项仅用于界面 故与Preference无关
界面 其实 讨论这个 比较鸡肋 大家自己试着运行就一目了然了 所以 觉得还是以步骤为主
鉴于PreferenceActivity使用 网络很多 故此略过 为了给自己备份 防止以后用到 大致叙述一下
[代码 步骤]
1. PreferenceActivity 界面比较特别 在 res/xml/setting.xml
Xml代码
1. <?xml version="1.0" encoding="utf-8"?>
2. <PreferenceScreen
3. xmlns:android="http://schemas.android.com/apk/res/android">
4. <CheckBoxPreference
5. android:key="autoBack"
6. android:title="自动回复"
7. android:summaryOn="开启"
8. android:summaryOff="关闭"
9. android:defaultValue="true"
10. />
11.
12. <PreferenceCategory android:title="SMS 助手">
13. <CheckBoxPreference
14. android:key="smsSilence"
15. android:title="静音"
16. android:summaryOn="开启"
17. android:summaryOff="关闭"
18. android:defaultValue="false"
19. />
20. <PreferenceScreen android:title="更多选项">
21. <CheckBoxPreference
22. android:key="cb21"
23. android:title="功能1"
24. android:summaryOn="开启"
25. android:summaryOff="关闭"
26. android:defaultValue="true"
27. />
28. <CheckBoxPreference
29. android:key="cb22"
30. android:title="功能2"
31. android:summaryOn="使用"
32. android:summaryOff="停用"
33. android:defaultValue="true"
34. />
35. <ListPreference
36. android:key="list1"
37. android:title="android forum"
38. android:summary="开发论坛"
39. android:dialogTitle="请选择论坛"
40. android:entries="@array/entries_list_preference"
41. android:entryValues="@array/entriesvalue_list_preference"
42. />
43. <EditTextPreference
44. android:key="et1"
45. android:title="EditTextPreference Sample"
46. android:summary="点击输入"
47. android:dialogTitle="输入设置"
48. android:defaultValue="Hello EditTextPreference"
49. />
50. </PreferenceScreen>
51. </PreferenceCategory>
52.
53. <PreferenceCategory android:title="其他选项">
54. <RingtonePreference
55. android:key="rt1"
56. android:title="RingtonePreference Sample"
57. android:summary="选择铃声"
58. />
59. </PreferenceCategory>
60. </PreferenceScreen>
2. 导入setting.xml
Java代码
1. addPreferencesFromResource(R.xml.settings);
emulator 运行截图:
点开"更多选项"
具体 请大家自己尝试之
3. 其实 关于PreferenceActivity 问题 基本结束了 但是 初次使用 会碰到一些坎坷 现一一讨论
4. 监听设定变化问题 普通布局里的监听 比较简单 先通过findViewById()获得目标View 再在其上注册监听器即可
但是 PreferenceActivity 并没有提供findViewById() 也就无法监听 那么 怎么做呢?
- 得到SharedPreferences 句柄
Java代码
1. sp = PreferenceManager.getDefaultSharedPreferences(this);
- 在 sp 之上注册改变监听器
Java代码
1. sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener(){
2.
3. @Override
4. //sharedPreferences:句柄
5. //key: 改变 键值
6. public void onSharedPreferenceChanged(
7. SharedPreferences sharedPreferences, String key) {
8. // TODO Auto-generated method stub
9.
10. if(key.equals("autoBack")){
11. Boolean autoBack = sharedPreferences.getBoolean("autoBack", false);
12. if(autoBack){
13. Log.d("TAG","autoBack: true!");
14. }
15. else {
16. Log.d("TAG","autoBack: false!");
17. }
18. }
19. }
20.
21. });
5. Preference 异地使用 即:PreferenceActivity 在一个应用程序 而别处应用程序可能也想改变该数据 怎么做呢?
- 通过getSharedPreferences() 得到SharedPreferences实例
Java代码
1. spc = this.getSharedPreferences("com.android.PreferenceActivity.Usage_preferences.xml", MODE_WORLD_READABLE );
- 取值
Java代码
1. Boolean autoBack = spc.getBoolean("autoBack", false);
- 赋值
Java代码
1. public void putValue(String key, Boolean value){
2. spe = spc.edit();
3. spe.putBoolean(key, value);
4. spe.commit();
5. }
就这样结束 似乎感觉不爽 所以决定加点料
- ListPreference 使用
Java代码
1. <ListPreference
2. android:key="list1"
3. android:title="android forum"
4. android:summary="开发论坛"
5. android:dialogTitle="请选择论坛"
6. android:entries="@array/entries_list_preference"
7. android:entryValues="@array/entriesvalue_list_preference"
8. />
Java代码
1. <?xml version="1.0" encoding="utf-8"?>
2. <resources>
3. <string-array name="entries_list_preference">
4. <item>www.anddev.org</item>
5. <item>www.eoeandroid.com</item>
6. <item>developer.android.com</item>
7. </string-array>
8. <string-array name="entriesvalue_list_preference">
9. <item>1</item>
10. <item>2</item>
11. <item>3</item>
12. </string-array>
13. </resources>
EditTextPreference 使用
Xml代码
1. <EditTextPreference
2. android:key="et1"
3. android:title="EditTextPreference Sample"
4. android:summary="点击输入"
5. android:dialogTitle="输入设置"
6. android:defaultValue="Hello EditTextPreference"
7. />
发表评论
-
startActivityForResult 简介
2011-03-29 15:55 1237依次打开Activity A1--A2--A3--A4 这时 ... -
startActivityForResult
2011-03-29 15:49 1097startActivityForResult 方法-- ... -
史上最全的Android的Tab与TabHost讲解
2011-03-28 11:22 1531Tab与TabHost 这就是Tab,而盛放Tab的 ... -
Android对话框
2011-03-25 11:21 1078Android 对话框(Dialog)大全 ... -
TCP/UDP/HTTP
2011-03-25 11:09 1080先来一个讲TCP、UDP和HTTP ... -
9png
2011-03-25 11:08 1865今天学习了用9png图来优化横屏竖屏的UI,使用sdk自带的工 ... -
Notification
2011-03-25 11:07 874Android系统的状态栏(Status Bar)中有一个创新 ... -
一些技巧
2011-03-25 11:03 7351:查看是否有存储卡插入 String status=Envi ... -
布局像素单位
2011-03-25 11:03 778Android的layout文件中有时候可能会指定具体的单位, ... -
使用ActivityGroup来切换Activity和Layout
2011-03-25 11:02 1075在一个主界面中做Activity切换一般都会用TabActiv ... -
activitygroup
2011-03-25 11:01 1637说说tabhost和activitygroup 最近 ... -
线程
2011-03-25 11:01 968今天在论坛上看到一些关于线程的帖子,我觉得与我理解的有些差异, ... -
类级框架
2011-03-25 11:00 707类集框架:Collection,Map,Iterator,En ... -
Intent打电话
2011-03-25 11:00 1167intent英文意思是意图,pending表示即将发生或来临的 ... -
Intent Uri
2011-03-25 10:59 1018进入联系人页面 1.Intent intent = new I ... -
Service
2011-03-25 10:59 899一、Service的概念 Service是Android程序中 ... -
Broadcast Receiver
2011-03-25 10:56 1881一、Broadcast Receiver简介 Android中 ... -
ContentProvider MIME类型
2011-03-25 10:55 1195Android程序的主要4部分 ... -
ContentProvider-1查询
2011-03-25 10:55 1183今天看了android的官方文档中ContentProvide ... -
ContentProvider-2modify data:insert,update,delete
2011-03-25 10:54 1154今天补充关于modify data ...
相关推荐
android中PreferenceActivity详解
看到很多书中都没有对PreferenceActivity做介绍,而我正好又在项目中用到,所以就把自己的使用的在这总结一下,也方便日后查找
android之PreferenceActivity使用详解
为了引入这个概率 首先从需求说起 即:现有某Activity专门用于手机属性设置 那么应该如何做呢
主要介绍了Android PreferenceActivity与PreferenceFragment详解及简单实例的相关资料,需要的朋友可以参考下
我的blog文章《Android实战之PreferenceActivity使用详解》中的配套源码,如有需要请在blog.csdn.net/lincyang中搜索这篇文章。
2.1.9、PreferenceActivity 用法 22 2.1.10、Dialog风格的Activity 23 2.1.11、横竖屏切换不销毁当前Activity 23 2.2、INTENT RECEIVER 25 2.3、SERVICE 26 2.3.1、什么是Service 26 2.3.2、如何使用Service 27 ...
2.1.9、PreferenceActivity 用法 22 2.1.10、Dialog风格的Activity 23 2.1.11、横竖屏切换不销毁当前Activity 23 2.2、INTENT RECEIVER 25 2.3、SERVICE 26 2.3.1、什么是Service 26 2.3.2、如何使用Service 27 ...