如何设置preferenceScreen到Android其它布局 [英] How to set PreferenceScreen into other layout in android

查看:112
本文介绍了如何设置preferenceScreen到Android其它布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用 preferenceScreen 在我的应用程序,并在 RES / XML / setting_ preference.xml <本次活动创建XML布局/ STRONG>。但这种XML布局很简单,我想在另一个布局使用此布局。结果
例如:我想使用 setting_ preference.xml setting_activity.xml ,setting_activity.xml路径为 RES /布局/ setting_activity.xml

如何呢?结果
setting_ preference XML code:

 &LT;?XML版本=1.0编码=UTF-8&GT?;
&LT; preferenceScreen的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android&GT;    &LT; preferenceCategory
        机器人:键=setting_title_title_category
        机器人:标题=标题选项&GT;    &LT;复选框preference
        机器人:ID =@ + ID / setting_title_show_id
        机器人:键=setting_title_show
        机器人:标题=显示主标题
        机器人:总结=显示/隐藏标题的MainPage
        安卓:检查=真/&GT;    &LT; EditText上preference
        机器人:键=setting_title_text
        机器人:标题=设置主标题
        机器人:总结=更改标题的MainPage
        机器人:DIALOGTITLE =更改标题
        机器人:dialogMessage =更改标题,请.../&GT;    &LT; / preferenceCategory&GT;    &LT; preferenceCategory
        机器人:键=setting_title_font_category
        机器人:标题=字体选项&GT;        &LT;名单preference
            机器人:键=setting_title_font_color
            机器人:标题=标题字体颜色
            机器人:总结=更改标题的字体颜色
            机器人:项=@阵列/颜色
            机器人:entryValues​​ =@阵列/颜色
            机器人:DIALOGTITLE =更改字体颜色/&GT;    &LT; / preferenceCategory&GT;    &LT;铃声preference
        机器人:标题=TES/&GT;&LT; / preferenceScreen&GT;

setting_activity XML code:

 &LT;?XML版本=1.0编码=UTF-8&GT?;
&LT;的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    工具:上下文=com.tellfa.nikandroid.mytestdbproject.SettingPage&GT;&LT; / RelativeLayout的&GT;

设置页code:

 公共类SettingPage扩展preferenceActivity实现共享preferences.OnShared $ P $ {pferenceChangeListener    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        。getFragmentManager()调用BeginTransaction()取代(android.R.id.content,新的我的preferenceFragment())提交()。
    }    @覆盖
    公共无效onShared preferenceChanged(共享preferences共享preferences,串键){
        如果(key.equals(setting_title_font_color)){
            //获得通过的关键preference
            preference preF =找到preference(键);
            //做你的东西在这里
        }        如果(key.equals(setting_title_show)){            preference preF =找到preference(键);
        }
    }    公共静态类我的preferenceFragment扩展$ P $ {pferenceFragment
        @覆盖
        公共无效的onCreate(最终捆绑savedInstanceState){
            super.onCreate(savedInstanceState);
            加preferencesFromResource(R.xml.setting_ prefrences);
        }
    }
}


解决方案

添加要加载XML preference文件中的布局XML文件,并执行该活动preferenceFragment一个的FrameLayout。

I want use PreferenceScreen in my application, and create XML layout for this activity in res/xml/setting_preference.xml. but this XML layout is very simple, i want use this layout in another layout.
For example : i want use setting_preference.xml into setting_activity.xml , setting_activity.xml path is res/layout/setting_activity.xml.

How can i it?
setting_preference XML code:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
        android:key="setting_title_title_category"
        android:title="Title options">

    <CheckBoxPreference
        android:id="@+id/setting_title_show_id"
        android:key="setting_title_show"
        android:title="Show Main Title"
        android:summary="Show/hide MainPage title"
        android:checked="true"/>

    <EditTextPreference
        android:key="setting_title_text"
        android:title="Set Main Title"
        android:summary="Change MainPage title"
        android:dialogTitle="Change Title"
        android:dialogMessage="Change title please..."/>

    </PreferenceCategory>

    <PreferenceCategory
        android:key="setting_title_font_category"
        android:title="Font options">

        <ListPreference
            android:key="setting_title_font_color"
            android:title="Title font colors"
            android:summary="Change title font colors"
            android:entries="@array/colors"
            android:entryValues="@array/colors"
            android:dialogTitle="Change font color" />

    </PreferenceCategory>

    <RingtonePreference
        android:title="tes"/>

</PreferenceScreen>

setting_activity XML code:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.tellfa.nikandroid.mytestdbproject.SettingPage">

</RelativeLayout>

Setting Page code:

public class SettingPage extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (key.equals("setting_title_font_color")) {
            // get preference by key
            Preference pref = findPreference(key);
            // do your stuff here
        }

        if (key.equals("setting_title_show")){

            Preference pref = findPreference(key);
        }
    }

    public static class MyPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.setting_prefrences);
        }
    }
}

解决方案

Add a frameLayout where you want to load your xml preference file in the layout xml file and implement PreferenceFragment in that activity.

这篇关于如何设置preferenceScreen到Android其它布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆