PreferenceActivity系统本身的设置页

来源:互联网 发布:淘宝二级页面怎么做 编辑:程序博客网 时间:2024/05/18 00:30

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)+"");
0 0
原创粉丝点击