大家好,我是苏承栈,今天我们来聊聊Android开发中常用的PreferenceFragment。这玩意儿在设置界面里可是大有用处,能让你轻松管理各种选项设置。
首先,PreferenceFragment是啥?简单来说,它是用来替代老式的PreferenceActivity的。以前我们用PreferenceActivity来创建设置界面,但现在推荐使用PreferenceFragment,因为它更灵活,更符合现代Android的设计理念。
接下来,我们就来一步步看看如何使用PreferenceFragment。
1. 创建PreferenceFragment
1 package com.example.m05_preffragment01;
2
3 import android.os.Bundle;
4 import android.preference.PreferenceFragment;
5
6 public class PrefFragment extends PreferenceFragment {
7 @Override
8 public void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 //从xml文件加载选项
11 addPreferencesFromResource(R.xml.preferences);
12 }
13 }2. 定义布局文件
在res目录下创建一个xml目录,并创建一个名为preferences.xml的文件。在这个文件中,你可以定义各种Preference控件,比如CheckBoxPreference、EditTextPreference、ListPreference等等。
3. 在Activity中加载Fragment
1 package com.example.m05_preffragment01;
2
3 import android.app.Activity;
4 import android.app.FragmentManager;
5 import android.app.FragmentTransaction;
6 import android.os.Bundle;
7
8 public class MainActivity extends Activity {
9
10 @Override
11 protected void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 setContentView(R.layout.activity_main);
14
15 //加载PrefFragment
16 FragmentManager fragmentManager = getFragmentManager();
17 FragmentTransaction transaction = fragmentManager.beginTransaction();
18 PrefFragment prefFragment = new PrefFragment();
19 transaction.add(R.id.prefFragment, prefFragment);
20 transaction.commit();
21
22 }
23
24 }4. 监听事件
你可以在PreferenceFragment中重写onPreferenceTreeClick()方法来监听Preference控件的点击事件。通过preference.getKey()可以获取到被点击的Preference控件的key,从而进行相应的处理。
1 @Override
2 public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
3 Preference preference) {
4 //如果“保存个人信息”这个按钮被选中,将进行括号里面的操作
5 if(
