日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PreferenceScreen 偏好显示类 的使用

發布時間:2023/12/14 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PreferenceScreen 偏好显示类 的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PreferenceScreen preference是偏好,首選的意思,PreferenceScreen個人翻譯成 “偏好顯示”,明白這個意思就好,就是說根據特點靈活的定義顯示內容風格,一個屏幕可以包含多個風格,像系統自帶的聲音設置界面。

實現這種顯示效果其實很簡單,只需要借助PreferenceScreen類即可。在項目資源文件中新建xml文件夾,在里面新建preferences.xml文件.
根元素為PreferenceScreen 代表顯示一整個屏幕,內部嵌套PreferenceCategory標簽,表示偏好類別,在PreferenceCategory標簽內部可以隨便存放復選框,輸入框,列表等顯示控件.可包含的控件內容在android.preference包下可查閱.xml文件編寫好后,需要加載到activity中,對于偏好顯示的xml加載,可以使用PreferenceActivity中的addPreferencesFromResource(),所以Activity需要繼承PreferenceActivity.既然顯示的屏幕中包含復選框,輸入框的控件,我們必然對選擇與否,輸入框內容感興趣,我們要怎樣獲取屏幕的內容呢?
復寫activity中的onPreferenceTreeClick 方法,在對屏幕顯示的內容進行操作時,會觸發此方法,在方法內部通過調用

SharedPreferences contentPreference = preference.getSharedPreferences(); boolean checkbox_toggle = contentPreference.getBoolean("checkbox_preference", false); String animalName = contentPreference.getString("edittext_preference", "default");

即可得到屏幕上輸入的內容,與使用SharedPreference對象一樣,通過key-value 的形式獲取,其中key是xml控件標簽中key屬性對應的值.

1.先在res文件夾中新建一個xml文件夾,用來存放preferences.xml文件
preferences.xml

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="顯示一排偏好"> <CheckBoxPreference android:key="checkbox_preference" android:title="開關偏好" android:summary="這是一個開關按鈕" /> </PreferenceCategory> <PreferenceCategory android:title="基于對話框的偏好"> <EditTextPreference android:key="edittext_preference" android:title="文本輸入偏好" android:summary="使用一個文本框對話框" android:dialogTitle="輸入你的寵物" /> <ListPreference android:key="list_preference" android:title="列表偏好" android:summary="使用一個列表對話框" android:entries="@array/entries_list_preference" android:entryValues="@array/entryvalues_list_preference" android:dialogTitle="選擇一個" /> </PreferenceCategory> <PreferenceCategory android:title="啟動偏好"> <PreferenceScreen android:key="screen_preference" android:title="屏幕" android:summary="顯示另一個偏好屏幕"> <!-- You can place more preferences here that will be shown on the next screen. --> <CheckBoxPreference android:key="next_screen_checkbox_preference" android:title="開關偏好" android:summary="另一個屏幕上的偏好" /> </PreferenceScreen> <PreferenceScreen android:title="意圖偏好" android:summary="通過意圖啟動一個Activity"> <intent android:action="android.intent.action.VIEW" android:data="http://www.android.com" /> </PreferenceScreen> </PreferenceCategory> <PreferenceCategory android:title="偏好屬性"> <CheckBoxPreference android:key="parent_checkbox_preference" android:title="父開關" android:summary="這是一個父開關" /> <CheckBoxPreference android:key="child_checkbox_preference" android:dependency="parent_checkbox_preference" android:layout="?android:attr/preferenceLayoutChild" android:title="子開關" android:summary="這是一個子開關" /> </PreferenceCategory> </PreferenceScreen>

2.新建一個Activity繼承PreferenceActivity
3.重寫onCreate方法,添加preferences.xml作為顯示界面:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); // setContentView(R.layout.activity_setting);addPreferencesFromResource(R.xml.preferences);}

好了,這些都搞完了,那么我們怎么能夠隨時拿到這些首選項數據呢?

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 偏好显示类 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。