PreferenceFragment的使用

1、在res文件夹下面新建一个xml文件夹,在里面新建一个preferences.xml文件

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory android:title="In-line preferences" >
        <CheckBoxPreference
            android:key="checkbox_preference"
            android:summary="这是一个复选框"
            android:title="复选框设置" />
    </PreferenceCategory>
    <PreferenceCategory android:title="Dialog-based preferences" >
        <EditTextPreference
            android:dialogTitle="请输入你最喜欢的种族"
            android:key="edittext_preference"
            android:summary="一个使用了编辑文本对话框的例子"
            android:title="请输入你最喜欢的种族" />

        <ListPreference
            android:dialogTitle="请选择一项"
            android:entries="@array/entries_list_preference"
            android:entryValues="@array/entryvalues_list_preference"
            android:key="list_preferenc"
            android:summary="一个使用了列表对话框的例子"
            android:title="请选择一项" />
    </PreferenceCategory>
    <PreferenceCategory android:title="Launch preferences" > 
    <!-- This PreferenceScreen tag serves as a screen break (similar to page break in word processing). Like for other preference types, we assign a key here so it is able to save and restore its instance state. -->
        <PreferenceScreen
            android:key="screen_preference"
            android:summary="展示另一个首选项配置页面"
            android:title="页面首选项" > 
            <!-- 你可以在这里放置更多的首选项内容,将被在下一个页面呈现出来 -->
            <CheckBoxPreference
                android:key="next_screen_checkbox_preference"
                android:summary="在另一个页面展示但出于同一个层级的首选项配置"
                android:title="复选框设置" />
        </PreferenceScreen>
        <PreferenceScreen
            android:summary="从一个意图中启动一个activity"
            android:title="意图首选项" >
            <intent
                android:action="android.intent.action.VIEW"
                android:data="http://www.baidu.com" />
        </PreferenceScreen>
    </PreferenceCategory>
        <PreferenceCategory android:title="Preference attributes" >
        <CheckBoxPreference
            android:key="parent_checkbox_preference"
            android:summary="这是一个可见的父类"
            android:title="父类复选框首选项" />
        <!-- 子类的可见类型是由样式属性定义的 -->
        <CheckBoxPreference
            android:dependency="parent_checkbox_preference"
            android:key="child_checkbox_preference"
            android:layout="?android:attr/preferenceLayoutChild"
            android:summary="这是一个可见的子类"
            android:title="子类复选框首选项" />
    </PreferenceCategory>
</PreferenceScreen>

2、新建PreferenceFragment 在onCreate方法中用addPreferencesFromResource(R.xml.preferences);从xml文件加载选项

class PrefsFragement extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
}

3、重写onPreferenceTreeClick方法 实现点击不同选项的逻辑

@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    if ("checkbox_preference".equals(preference.getKey())) {
        CheckBoxPreference checkBoxPreference = (CheckBoxPreference) findPreference("checkbox_preference");
        EditTextPreference editTextPreference = (EditTextPreference) findPreference("edittext_preference");
        editTextPreference.setEnabled(checkBoxPreference.isChecked());

    }
    return super.onPreferenceTreeClick(preferenceScreen, preference);
}

ps:onPreferenceTreeClick、onPreferenceClick、onPreferenceChange的关系

1 先调用onPreferenceClick()方法,如果该方法返回true,则不再调用onPreferenceTreeClick方法 ;

如果onPreferenceClick方法返回false,则继续调用onPreferenceTreeClick方法。

2 onPreferenceChange的方法独立与其他两种方法的运行。也就是说,它总是会运行。

3、在Activity中设置Fragment

getFragmentManager().beginTransaction().replace(R.id.content, new PrefsFragement()).commit();
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值