admin 管理员组文章数量: 1087139
2024年4月20日发(作者:shell脚本书籍推荐 知乎)
Android进阶——Preference详解之
Preference系的基本应用和管理(二)
一、PreferenceActivity
1、PreferenceActivity概述
PreferenceActivity是一个抽象类,继承于ListActivity,以列表形式视图来展现界面,加载的
整个View也是基于ListActivity中那个ListView的,其最主要的优势在于添加Preference后
可让其状态持久化储存(通过SharedPreferences,一般存储在/data/data//shared_prefs文件夹
下的默认名为“app package name”+”_”的文件里),比如说用户勾选CheckBox
后退出应用,下一次进入到这一界面时候,对应的是CheckBox依然是被勾选状态,如果要
实现这样的机制,我们自己也可以实现,但是没有必要,因为Android已经替我们实现了,
就是我们的这一系列的主角——Preference,Preference会自动地替我们去保存这些状态对应
的值到对应的SharedPreferences文件里,而当我们每次启动的时候Acitivity
(PreferenceActivity)会自动根据key去获取相关数据,完成用户界面的更新。我们手机当
中的系统设置就是及其典型的Preference的应用,也正是由于工作中需要去客制化Settings,
才有了这一系列的文章。
上图是我们定制的Settings模块中的对应的部分SharedPreferences。关于Preference对应的
SharedPreferences往往很容易被我们忽视两点
并非我们第一次打开相应界面之后就会自动创建对应的SharedPreferences文件,而是在我们
改变了原有状态时候
并非所有的Preference及其子类都会创建,仅仅针对需要记录状态的Preference。
2、PreferenceActivity的初始化
PreferenceActivity其实和普通的Activity本质上来说区别不大,只不过多了些自动去读取
SharedPrefrences的值来更新界面和其他一些逻辑,所以初始化本质上来说并无很大的区别,
但是与普通Activity的layout不同,PreferenceActivity的layout我们可以理解成为两个部分:
其他View和一个id为的ListView,那么我们可以理解成为当我们在onCreate
方法里先调用setContentView完成整个Activity的View的构建(layout文件里必须包含id
为的listView,否则会报E/AndroidRuntime: Caused by:
eException: Your content must have a ListView whose id attribute is
‘’),再调用addPreferencesFromResource来完成Preference界面的构建;当
然也可以只调用addPreferencesFromResource方法。
1、继承PreferenceActivity实现具体业务类,重写相关生命周期方法
public class MainActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
setContentView(ty_main);
addPreferencesFromResource(_preference);
}
...
}
2、通过addPreferencesFromResource(xml资源id)加载静态xml资源文件 或者 完全
通过代码构造对象再动态添加
在res文件夹下新建xml文件夹,再在xml文件中新建对应的xml资源,xml资源类似
我们在使用普通Activity时的layout文件,PreferenceActivity独特之处在于并不是使用普通
的layout文件,而是使用res下xml文件夹下的xml资源文件
res/xml/demo_
android:key="key_checkbox_preference" android:summary="Some summay for CheckBoxPreference" android:title="The Title Of CheckBoxPreference" /> 也可通过代码去构造对象,添加容器之后再调用setPreferenceScreen(PreferenceScreen preferenceScreen)把容器对象设置到Activity上 private void createPreference(){ PreferenceScreen preferenceScreen = ferenceManager().createPreferenceScreen(this);//先构建PreferenceScreen对象得到一 个布局容器 ferenceScreen(preferenceScreen);//设置容器 CheckBoxPreference checkBoxPreference=new CheckBoxPreference(this);//构建 一个子Preference,待添加到容器中 (CHECKBOXPRERENCE_KEY);//设置key
版权声明:本文标题:Android进阶——Preference详解之Preference系的基本应用和管理(二 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1713554684a640497.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论