Android的设置Settings功能比较常见,通常可以考虑使用PreferenceActivity实现。

PreferenceActivity需要从res/xml加载(addPreferencesFromResource)一个定义好的Preference的xml文件。比如preferences.xml:

<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >    <PreferenceCategory android:title="@string/title_1" >        <ListPreference            android:dialogTitle="请选择城市"            android:entries="@array/citys"            android:entryValues="@array/citys_code"            android:key="@string/listpreference_key"            android:summary="@string/listpreference_summary"            android:title="@string/listpreference_title" />    </PreferenceCategory>    <PreferenceCategory android:title="@string/title_2" >        <EditTextPreference            android:defaultValue="缺省"            android:key="@string/editpreference_key"            android:summary="@string/editpreference_summary"            android:title="@string/editpreference_title" />        <CheckBoxPreference            android:defaultValue="false"            android:key="@string/checkbox_key"            android:summary="@string/checkbox_summary"            android:title="@string/checkbox_title" />    </PreferenceCategory>    <!-- 点击将浏览和打开网页 -->    <Preference        android:summary="http://www.baidu.com"        android:title="浏览网页" >        <intent            android:action="android.intent.action.VIEW"            android:data="http://www.baidu.com" >        </intent>    </Preference>    <!-- 此处将跳转到下一屏设置 -->    <PreferenceScreen        android:key="preference_screen_2_key"        android:persistent="false"        android:title="PreferenceScreen 2" >        <EditTextPreference            android:defaultValue="缺省值2"            android:key="edit_text_key_2"            android:summary="edit summary"            android:title="edit text 2" />    </PreferenceScreen></PreferenceScreen>

其中需要的数组资源citys在res/values中的arrays.xml中定义好:

<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="citys">        <item>成都</item>        <item>北京</item>        <item>上海</item>    </string-array>    <string-array name="citys_code">        <item>028</item>        <item>010</item>        <item>021</item>    </string-array></resources>

在res/values中的strings.xml:

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">PreferenceScreen</string>    <string name="hello_world">Hello world!</string>    <string name="action_settings">Settings</string>    <string name="title_1">第一组</string>    <string name="title_2">第二组</string>    <string name="title_3">第三组</string>    <string name="editpreference_title">EditText_title</string>    <string name="editpreference_summary">文本输入框</string>    <string name="editpreference_key">editpreference_key</string>    <string name="checkbox_title">CheckBox_title</string>    <string name="checkbox_summary">选项框</string>    <string name="checkbox_key">checkbox_key</string>    <string name="listpreference_title">ListPreference_title</string>    <string name="listpreference_key">ListPreference_key</string>    <string name="listpreference_summary">下拉菜单</string></resources>

java代码:

package com.example.preferencescreen;import android.content.SharedPreferences;import android.content.SharedPreferences.OnSharedPreferenceChangeListener;import android.os.Bundle;import android.preference.EditTextPreference;import android.preference.ListPreference;import android.preference.Preference;import android.preference.PreferenceActivity;import android.preference.PreferenceManager;import android.preference.PreferenceScreen;import android.util.Log;import android.widget.Toast;public class ActivityB extends PreferenceActivity {private final String LIST_KEY = "ListPreference_key";private final String EDITPREFERENCE_KEY = "editpreference_key";private EditTextPreference mEditText;private ListPreference list;private OnSharedPreferenceChangeListener mOnSharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {@Overridepublic void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {if (key.equals(EDITPREFERENCE_KEY)) {// 更新String s = sharedPreferences.getString(EDITPREFERENCE_KEY, "null");mEditText.setSummary(s);}if (key.equals(LIST_KEY)) {String value = list.getValue();String entry = list.getEntry() + "";// list.setSummary(value);if (value.equals("028")) {Toast.makeText(getApplicationContext(), "当前选择的是成都", Toast.LENGTH_SHORT).show();} else if (value.equals("010")) {Toast.makeText(getApplicationContext(), "当前选择的是北京", Toast.LENGTH_SHORT).show();} else if (value.equals("021")) {Toast.makeText(getApplicationContext(), "当前选择的是上海", Toast.LENGTH_SHORT).show();}}}};@Overrideprotected void onResume() {super.onResume();getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);}@Overrideprotected void onPause() {super.onPause();getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);}// 那一个设置选项栏被触发@Overridepublic boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {return false;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 通用的读取设置的某个值的方法SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);String editPreference_text = sharedPreferences.getString(EDITPREFERENCE_KEY, "暂时为空");Log.d("editPreference_text", editPreference_text);// 添加设置的选项this.addPreferencesFromResource(R.xml.preference);// 预读取。为PreferenceActivity中的某个设置选项初始化值mEditText = (EditTextPreference) findPreference(EDITPREFERENCE_KEY);mEditText.setSummary(editPreference_text);list = (ListPreference) findPreference(LIST_KEY);// 注册添加设置的项数据发生变化时候的监听sharedPreferences.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);}}


更多相关文章

  1. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  2. [置顶] Android(安卓)菜单:OptionMenu 介绍
  3. Android:APK签名
  4. Java GC & Android(安卓)GC学习索引
  5. android TabHost简单使用
  6. 翻译引用 android的按键响应
  7. 使用ndk开发android 5.0 平台错误处理(1)
  8. Android(安卓)libav移植
  9. Android(安卓)Studio 的build variants 没有 test artifact问题

随机推荐

  1. [置顶] Android(安卓)实现书籍翻页效果--
  2. 扒一扒Android应用的续命大法
  3. Android(安卓)Studio如何查看资源或者函
  4. 编译Android源码致命错误解决方案
  5. Android(安卓)移植到高清机顶盒csm1201[
  6. 风格化的 Toggle Buttons
  7. Android实现增量更新
  8. 3.【小萌伴Android】新闻/H5游戏模块及广
  9. Android(安卓)NDK编译本地文件以及引用第
  10. Android瀑布流照片墙实现,体验不规则排列