PreferenceActivity系统本身的设置页

PreferenceActivity 系统本身的设置页

PreferenceActivity extends ListView

分组:PreferenceCategory
开关:CheckBoxference
ListPreference
EditTextPreference

每一次设置,都会被Preference,这就是setting的数据持久化。

//数组定义
    <!--?xml version="1.0" encoding="utf-8"?-->
    <resources>
        <string-array name="list_preference">
            <item>Red</item>
            <item>Blue</item>
            <item>Green</item>  
        </string-array>
    </resources>
<?xml version="1.0" encoding="utf-8"?>
        <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

            <CheckBoxPreference
                android:defaultValue="false"
                android:key="running_state"     android:summary="@string/running_summary_stopped"      //摘要
                android:title="@string/running_label" />                 //标题

            <PreferenceCategory      //分类、种类
                android:key="settings"
                android:title="@string/settings_label" >
                <EditTextPreference
                    android:defaultValue="@string/username_default"
                    android:key="username"
                    android:title="@string/username_label" />       

                <PreferenceScreen  //点击启动一个新的Preference 界面,如果配置intent节点,甚至可以启动浏览器打开web
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:title="@string/advancedsettings_label" >
                    <EditTextPreference
                        android:defaultValue="@string/portnumber_default"
                        android:key="portNum"
                        android:title="@string/portnumber_label" />
                    <CheckBoxPreference
                        android:defaultValue="@string/wakelock_default"
                        android:key="stayAwake"
                        android:title="@string/wakelock_label" />
                </PreferenceScreen>

            </PreferenceCategory>

            <PreferenceCategory
                android:key="extra_category"
                android:title="@string/extra_label" >
                <Preference
                    android:key="help"
                    android:title="@string/help_label" />        
            </PreferenceCategory>

        </PreferenceScreen>
//Setting中是加入这些UI信息
    public class Setting extends PreferenceActivity implements OnSharedPreferenceChangeListener{
        private EditTextPreference mEtPreference;
        private ListPreference mListPreference;
        private CheckBoxPreference mCheckPreference;

        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            //显示xml
            addPreferencesFromResource(R.xml.preferences);
            initPreferences();
        }

        private void initPreferences(){
            mEtPreference =(EditTextPreference)findPreference(Consts.EDIT_KEY);
            mListPreference = (ListPreference)findPreference(Consts.LIST_KEY);
            mCheckPreference = (CheckBoxPreference)findPreference(Consts.CHECKOUT_KEY);
        }
    }

    //获取自己设置好的偏好
        //我们需要注册一个Preference变化的Listener来监听这些事件。当我们做好设置后,Preference已经替我们做好了数据持久化了。

    protected void onResume(){
        super.onResume();
        //SetUp the inital values
        SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
        /*
            SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);//==getSharedPreferences("packageName_preferences" ,MODE_PRIVATE);
        */
        mListPreference.setSummary(sharedPreferences.getString(Consts.LIST_KEY, ""));
        mEtPreference.setSummary(sharedPreferences.getString(Consts.EDIT_KEY, "linc"));

        sharedPreferences.registerOnSharedPreferenceChangeListener(this);
    }

    protected void onPause(){
        super.onPause();
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key){
        if(key.equals(Consts.EDIT_KEY)){
            mEtPreference.setSummary(sharedPreferences.getString(key,"20"));
        }else if(key.equals(Consts.LIST_KEY)){
            mListPreference.setSummary(sharedPreferences.getString(key,""));
        }
    }

    //在其他Activity中获得设置的值
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
    tvCheckout.setText(settings.getBoolean(Consts.CHECKOUT_KEY,false)+"");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值