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/n/370099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WBAYCWBAYC
上一篇 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 Wakelock详解

    一、什么是Android Wakelock? 在Android应用开发中,Wakelock被广泛应用于保持屏幕或CPU处于唤醒状态,以便应用程序可以继续执行后台任务,直到任务完成。…

    编程 2025-04-24

发表回复

登录后才能评论