PreferenceScreen 偏好显示类 的使用
PreferenceScreen preference是偏好,首選的意思,PreferenceScreen個(gè)人翻譯成 “偏好顯示”,明白這個(gè)意思就好,就是說根據(jù)特點(diǎn)靈活的定義顯示內(nèi)容風(fēng)格,一個(gè)屏幕可以包含多個(gè)風(fēng)格,像系統(tǒng)自帶的聲音設(shè)置界面。
實(shí)現(xiàn)這種顯示效果其實(shí)很簡(jiǎn)單,只需要借助PreferenceScreen類即可。在項(xiàng)目資源文件中新建xml文件夾,在里面新建preferences.xml文件.
根元素為PreferenceScreen 代表顯示一整個(gè)屏幕,內(nèi)部嵌套PreferenceCategory標(biāo)簽,表示偏好類別,在PreferenceCategory標(biāo)簽內(nèi)部可以隨便存放復(fù)選框,輸入框,列表等顯示控件.可包含的控件內(nèi)容在android.preference包下可查閱.xml文件編寫好后,需要加載到activity中,對(duì)于偏好顯示的xml加載,可以使用PreferenceActivity中的addPreferencesFromResource(),所以Activity需要繼承PreferenceActivity.既然顯示的屏幕中包含復(fù)選框,輸入框的控件,我們必然對(duì)選擇與否,輸入框內(nèi)容感興趣,我們要怎樣獲取屏幕的內(nèi)容呢?
復(fù)寫activity中的onPreferenceTreeClick 方法,在對(duì)屏幕顯示的內(nèi)容進(jìn)行操作時(shí),會(huì)觸發(fā)此方法,在方法內(nèi)部通過調(diào)用
即可得到屏幕上輸入的內(nèi)容,與使用SharedPreference對(duì)象一樣,通過key-value 的形式獲取,其中key是xml控件標(biāo)簽中key屬性對(duì)應(yīng)的值.
1.先在res文件夾中新建一個(gè)xml文件夾,用來存放preferences.xml文件
preferences.xml
2.新建一個(gè)Activity繼承PreferenceActivity
3.重寫onCreate方法,添加preferences.xml作為顯示界面:
好了,這些都搞完了,那么我們?cè)趺茨軌螂S時(shí)拿到這些首選項(xiàng)數(shù)據(jù)呢?
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);boolean ON_OFF = sp.getBoolean("checkbox_preference", false);boolean next_screen = sp.getBoolean("next_screen_checkbox_preference", false);String text = sp.getString("edittext_preference", "");String listtext = sp.getString("list_preference", "");Log.i("lenve", ON_OFF+"--"+next_screen+"--"+text+"--"+listtext);可是有的時(shí)候我們?nèi)绻M暮罅ⅠR被系統(tǒng)獲知選項(xiàng)已被更改,又該如何?復(fù)寫繼承了PreferenceActivity的類中的onPreferenceTreeClick方法,這個(gè)方法會(huì)在設(shè)置修改時(shí)觸發(fā)。
@Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,Preference preference) {SharedPreferences sp = preference.getSharedPreferences();boolean ON_OFF = sp.getBoolean("checkbox_preference", false);Log.i("lenve", ON_OFF+"");String text = sp.getString("edittext_preference", "");Log.i("lenve", text+"");String listtext = sp.getString("list_preference", "");Log.i("lenve", listtext+"");boolean next_screen = sp.getBoolean("next_screen_checkbox_preference", false);Log.i("lenve", next_screen+"");return true; }最終顯示效果如下:
顯示效果:
轉(zhuǎn)載自:https://lovezhou.iteye.com/blog/1020361
https://blog.csdn.net/u012702547/article/details/47039199
總結(jié)
以上是生活随笔為你收集整理的PreferenceScreen 偏好显示类 的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BP神经网络与RBF神经网络matlab
- 下一篇: 学习笔记 Logistic阻滞人口预测模