您的位置:

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 应用程序的开发带来更多便利。

PreferenceFragment——Android应用中

2023-05-23
PreferenceFragment详解

2023-05-17
com.android.settings:Android设置

2023-05-22
印象笔记记录java学习(Java成长笔记)

2022-11-12
重学java笔记,java笔记总结

2022-11-23
java方法整理笔记(java总结)

2022-11-08
java笔记,大学java笔记

2022-11-28
java笔记,尚硅谷java笔记

2022-12-01
Mac笔记:在日常生活中高效实用的笔记工具

2023-05-18
Cherrytree笔记应用

2023-05-21
java学习笔记(java初学笔记)

2022-11-14
python基础学习整理笔记,Python课堂笔记

2022-11-21
阿里云笔记的功能与使用详解

2023-05-21
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
了解Typora PicGo :实现快捷上传和管理笔记中的图

2023-05-21
onenote linux——你的轻量级笔记应用

2023-05-21
发篇java复习笔记(java课程笔记)

2022-11-09
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
Android应用中MD5的加密原理与应用

MD5加密算法是常用的一种密码加密方式,它可以将任意长度的消息通过一个不可逆的算法变为一个128位的长度值,通常用于数据校验、数字签名、密码存储等领域。在Android应用中,MD5加密算法也能够得到

2023-12-08
java客户端学习笔记(java开发笔记)

2022-11-14