PreferenceScreen 偏好显示类 的使用
PreferenceScreen preference是偏好,首選的意思,PreferenceScreen個人翻譯成 “偏好顯示”,明白這個意思就好,就是說根據特點靈活的定義顯示內容風格,一個屏幕可以包含多個風格,像系統自帶的聲音設置界面。
實現這種顯示效果其實很簡單,只需要借助PreferenceScreen類即可。在項目資源文件中新建xml文件夾,在里面新建preferences.xml文件.
根元素為PreferenceScreen 代表顯示一整個屏幕,內部嵌套PreferenceCategory標簽,表示偏好類別,在PreferenceCategory標簽內部可以隨便存放復選框,輸入框,列表等顯示控件.可包含的控件內容在android.preference包下可查閱.xml文件編寫好后,需要加載到activity中,對于偏好顯示的xml加載,可以使用PreferenceActivity中的addPreferencesFromResource(),所以Activity需要繼承PreferenceActivity.既然顯示的屏幕中包含復選框,輸入框的控件,我們必然對選擇與否,輸入框內容感興趣,我們要怎樣獲取屏幕的內容呢?
復寫activity中的onPreferenceTreeClick 方法,在對屏幕顯示的內容進行操作時,會觸發此方法,在方法內部通過調用
即可得到屏幕上輸入的內容,與使用SharedPreference對象一樣,通過key-value 的形式獲取,其中key是xml控件標簽中key屬性對應的值.
1.先在res文件夾中新建一個xml文件夾,用來存放preferences.xml文件
preferences.xml
2.新建一個Activity繼承PreferenceActivity
3.重寫onCreate方法,添加preferences.xml作為顯示界面:
好了,這些都搞完了,那么我們怎么能夠隨時拿到這些首選項數據呢?
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);可是有的時候我們如果希望更改后立馬被系統獲知選項已被更改,又該如何?復寫繼承了PreferenceActivity的類中的onPreferenceTreeClick方法,這個方法會在設置修改時觸發。
@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; }最終顯示效果如下:
顯示效果:
轉載自:https://lovezhou.iteye.com/blog/1020361
https://blog.csdn.net/u012702547/article/details/47039199
總結
以上是生活随笔為你收集整理的PreferenceScreen 偏好显示类 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BP神经网络与RBF神经网络matlab
- 下一篇: 学习笔记 Logistic阻滞人口预测模