java代码:
public class Main3Activity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main3);
//加载布局文件,相当于setContentView();
addPreferencesFromResource(R.xml.dashboard_categories);
}
}
xml 布局文件,CheckBoxPreference 就相当于CheckBox 加 SharedPreference 的封装,只要选中之后,就会在shared_prefs文件加下生成对应的xml 文件,key就是xml文件中定义的key:android:key=“checkbox”,如果里面再套一个PreferenceScreen节点,点击进去就进入PreferenceScreen 这个节点所包含的xml文件。
key 是生成xml,文件所对应的key
title是对应的标题
summary是对应的小标题
icon 是对应的图标
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:key="checkbox"
android:title="CheckBoxPreference"
android:summary="check it box"
/>
<RingtonePreference
android:key="ring"
android:title="ringtone"
android:summary="check a ringtone"
/>
<PreferenceScreen
android:key="screen"
android:title="PreferenceScreen"
android:summary="screen it"
>
<SwitchPreference
android:key="switch"
android:title="switchPreference"
android:summary="switch it"
/>
<EditTextPreference
android:key="edit"
android:title="editPreference"
android:summary="OK"
/>
</PreferenceScreen>
</PreferenceScreen>
ListPreference 的用法,如下图所示,点击Options 弹出对话框,total 是名称,当选择check时,此时在xml文件中保存的值是
1,所以entries 属性,所对应的是单选框的标题,entryValues属性,所对应的是在xml文件中保存的值
<ListPreference
android:key="list"
android:title="Options"
android:entries="@array/entry_list"
android:entryValues="@array/values_list"
android:dialogTitle="list dialogtitle"
android:defaultValue="1"
/>
// value 下的string.xml
<resources>
<string name="app_name">My Application</string>
<string-array name="entry_list">
<item>total</item>
<item>check</item>
<item>airplace</item>
</string-array>
<string-array name="values_list">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
</resources>
MultiSelectListPreference
它的实现和ListPreference相似,不同的是还可以不选择或者多个选择,代码是和ListPreference一样的,在xml 保存的数据是set集合:
16
2
运行效果如下图:
onPreferenceTreeClick,这个方法是点击时候的回调,然后根据不同的key,进行区分,然后处理事件
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main3);
addPreferencesFromResource(R.xml.dashboard_categories);
checkbox = (CheckBoxPreference)findPreference("checkbox");
hahah = findPreference("ltt");
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if(preference.getKey().equals("checkbox")){
Log.i("lgj", "checkbox");
}
if(preference.getKey().equals("ltt")){
Log.i("lgj", "ltt");
}
return true;
}
除了上面这个监听的方法之外,还有两个重要的接口:
OnPreferenceChangeListener
当Preference的元素值发送改变时,触发该事件,记住只有元素值改变才会触发这个值,返回值为true 表示将新值写入sharedPreference文件中
false 则不将新值写入sharedPreference文件
那么这三个点击事件在一起是什么用的呢?它的规则如下:
点击某个Preference控件后,会先回调onPreferenceChange()方法,即是否保存值(这个下面会讲解这个值是如何保存的),然后再回调onPreferenceClick以及onPreferenceTreeClick()方法,因此在onPreferenceClick/onPreferenceTreeClick方法中我们得到的控件值就是最新的Preference控件值。然后onPreferenceClick会比onPreferenceTreeClick()方法先调用,如果onPreferenceClick方法返回true,那就不会再调用onPreferenceTreeClick()方法,如果onPreferenceClick()返回false就会继续调用onPreferenceTreeClick()方法
今天的文章PreferenceScreen 的使用分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25677.html