一、簡介
PreferenceFragment 是一個用來展示應用程序設置界面的 Fragment ,方便快捷的完成偏好設置相關任務,特別是配合 PreferenceManager 一起使用,可以輕鬆的完成偏好數據的存儲與讀取。
二、使用方法
1、創建 PreferenceFragment
//繼承 PreferenceFragmentCompat
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
繼承 PreferenceFragmentCompat 並重新實現以下方法:
onCreatePreferences:
- 調用 setPreferencesFromResource(intxmlResId, String rootKey) 方法設置自定義 XML 文件中的首選項。在文件 xmlResId 中聲明的首選項將被 inflate 到 PreferenceScreen 中。
2、創建布局文件
XML 中通過聲明 PreferenceScreen 和 PreferenceCategory 來完成分類的顯示,用各種不同的 Preference 部件來對偏好數據項進行展示與操作,例如 CheckBoxPreference、SeekBarPreference、ListPreference、EditTextPreference等。
三、主要方法詳解
1、addPreferencesFromResource(int preferencesResId)
此方法已廢棄,被推薦使用 setPreferencesFromResource(int preferencesResId, String key) 方法代替。
2、findPreference(CharSequence key)
根據 key 值關聯到對應的 Preference 對象。
3、setPreferencesFromResource(int preferencesResId, String key)
加載 XML 文件,並將首選項文件 inflate 到布局中,key 參數指定首選項的根節點的 key 值。
4、PreferenceChangeListener 監聽器
可以在應用程序代碼中動態的進行註冊。
Preference myPref = findPreference("example_checkbox_preference");
myPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Toast.makeText(getContext(), "The checkbox preference is " + newValue.toString(), Toast.LENGTH_LONG).show();
return true;
}
});
四、示例代碼
下面是一個在 MainActivity 中使用 SettingsFragment 的實例代碼:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加載 fragment
getSupportFragmentManager()
.beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
}
SettingsFragment 的實現依然保持原有的方式:
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, root單文件中找到:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.xxx">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- SettingsActivity調整 -->
<activity android:name=".SettingsActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
<intent-filter>
<action android:name="android.intent.action.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
`
五、結尾
以上就是 PreferenceFragment 的使用方法和相關知識點的詳細介紹。通過使用 PreferenceFragment ,我們可以更方便快捷的實現偏好設置和偏好數據的存儲和讀取,為 Android 應用程序的開發帶來更多便利。
原創文章,作者:WBAYC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/370099.html