Android設定頁面之PreferenceFragment的簡單使用示例
阿新 • • 發佈:2018-12-17
1.PreferenceFragment介紹
a.PreferenceFragment實際為Fragment的一個子類
b.建立一個PreferenceFragment需要繫結一個xml來顯示檢視
c.繫結後沒就可以當作普通Fragment使用,只是每new一個例項就會建立一個SharePreference,把之前繫結的xml中的值寫入儲存(即執行時候,會自動在/data/data/<packagename>/shared_prefs/目錄生成一個文字檔案)。
2.使用步驟
a.建立一個PreferenceFragment子類
package com.yuncai.menjin.transition; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.support.annotation.Nullable; import android.util.Log; /** * Function: * Created by TianMing.Xiong on 18-10-25. */ public class NavigationSummary extends PreferenceFragment implements Preference.OnPreferenceChangeListener{ public static NavigationSummary newInstance() { return new NavigationSummary(); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // xml資料夾下的一個xx_preference.xml中一個<PreferenceScreen/>標籤對應一個PreferenceFragment addPreferencesFromResource(R.xml.preferences); // 獲取級別描述(組) Preference set_navigation = getPreferenceManager().findPreference("set_navigation"); CharSequence summary = set_navigation.getSummary(); CharSequence title = set_navigation.getTitle(); Log.e("TAG","summary:"+summary+",title:"+title); // 監聽開關按鈕 Preference navigation_is_show_and_hide = getPreferenceManager().findPreference("navigation_is_show_and_hide"); // 用於監聽哪個Preference的回撥,用key標識 navigation_is_show_and_hide.setOnPreferenceChangeListener(this); } /** * 必須返回true,否則newValue值永遠是false * @param preference * @param newValue * @return */ @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); Log.e("TAG","key:"+key+",value:"+newValue); return true; } } // 輸出: // 01-03 18:30:16.160 3450-3450/com.yuncai.menjin.transition E/TAG: summary:用於導航欄設定,title:導航欄設定 // 01-03 18:30:24.720 3450-3450/com.yuncai.menjin.transition E/TAG: key:navigation_is_show_and_hide,value:false // 01-03 18:30:26.130 3450-3450/com.yuncai.menjin.transition E/TAG: key:navigation_is_show_and_hide,value:true
b.在res資料夾下建立一個xml資料夾,新建一個以<PreferenceScreen>為根節點的xml檔案preferences.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 設定的類別 --> <PreferenceCategory android:key="set_navigation" android:summary="用於導航欄設定" android:title="導航欄設定"> <CheckBoxPreference android:key="navigation_is_show_and_hide" android:summary="使裝置底部導航欄不可見" android:defaultValue="false" android:title="隱藏導航欄"/> </PreferenceCategory> </PreferenceScreen>
c.在fragment中繫結
即之前fragment中的程式碼
addPreferencesFromResource(R.xml.preferences);