PreferenceFragment——Android應用中的偏好設置

一、簡介

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WBAYC的頭像WBAYC
上一篇 2025-04-18 13:40
下一篇 2025-04-18 13:40

相關推薦

  • Android ViewPager和ScrollView滑動衝突問題

    Android開發中,ViewPager和ScrollView是兩個常用的控件。但是當它們同時使用時,可能會發生滑動衝突的問題。本文將從多個方面介紹解決Android ViewPa…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • Android Studio HUD 實現指南

    本文將會以實例來詳細闡述如何在 Android Studio 中使用 HUD 功能實現菊花等待指示器的效果。 一、引入依賴庫 首先,我們需要在 build.gradle 文件中引入…

    編程 2025-04-27
  • Android和Vue3混合開發方案

    本文將介紹如何將Android和Vue3結合起來進行混合開發,以及其中的優勢和注意事項。 一、環境搭建 在進行混合開發之前,需要搭建好相應的開發環境。首先需要安裝 Android …

    編程 2025-04-27
  • Android Java Utils 可以如何提高你的開發效率

    Android Java Utils 是一款提供了一系列方便實用的工具類的 Java 庫,可以幫助開發者更加高效地進行 Android 開發,提高開發效率。本文將從以下幾個方面對 …

    編程 2025-04-27
  • Android JUnit測試完成程序自動退出決方法

    對於一些Android JUnit測試的開發人員來說,程序自動退出是一個經常面臨的困擾。下面從多個方面給出解決方法。 一、檢查測試代碼 首先,我們應該仔細檢查我們的測試代碼,確保它…

    編程 2025-04-25
  • Android Activity啟動流程

    一、Activity概述 Android應用程序是由許多Activity組成的。一個Activity代表一個屏幕上的窗口。用戶與應用程序交互時,Activity會接收用戶的輸入並處…

    編程 2025-04-25
  • Android單元測試詳解

    一、單元測試概述 單元測試是指對軟件中的最小可測試單元進行檢查和驗證。在Android開發中,單元測試是非常重要的一環,可以保證代碼的質量、穩定性以及可維護性。 在Android開…

    編程 2025-04-25
  • Android WebView加載本地HTML

    一、介紹 Android WebView是一個內置的瀏覽器,它允許開發人員在應用中嵌入網頁。使用WebView可以輕鬆地在應用程序中顯示本地或遠程的HTML內容。本篇文章將重點講述…

    編程 2025-04-24
  • Android Studio APK全方位詳解

    隨着移動互聯網的快速發展,移動應用開發者的數量也在逐年增加,而Android作為全球最大的移動操作系統之一,因其中文化廣泛、簡單易學、開放自由等特點而備受開發者青睞。而Androi…

    編程 2025-04-24

發表回復

登錄後才能評論