Android设置Settings:ListPreference【3】



Android设置Settings:ListPreference【3】

Android的Settings实现中,ListPreference使用稍微复杂些,ListPreference使用两个数据源:entries和entryValues,entries和entryValues存在对应关系,可以这么简单理解,entries是人类可读的有意义的内容,而entryValues则是用来为机器或代码使用的具体的值,在前面文章【1】和【2】的基础写一个ListPreference的使用加以说明。
res/xml目录下的preferences.xml(有变化):




需要的res/values/arrays.xml(注意变化):


成都北京上海028010021


上层Java代码:

package zhangphil.settings;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;public class MainActivity extends PreferenceActivity {private MyOnSharedPreferenceChangeListener mOnSharedPreferenceChangeListener = new MyOnSharedPreferenceChangeListener();private EditTextPreference mEditTextPreference;private final String A_KEY = "edit_text_key_1";private ListPreference mListPreference;private final String LIST_KEY = "list_key";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 通用的读取设置的某个值的方法SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);String s = sharedPreferences.getString(A_KEY, "暂时为空");// 添加设置的选项addPreferencesFromResource(R.xml.preferences);// 预读取。为PreferenceActivity中的某个设置选项初始化值mEditTextPreference = (EditTextPreference) findPreference(A_KEY);mEditTextPreference.setSummary(s);// 注册添加设置的项数据发生变化时候的监听sharedPreferences.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);mListPreference = (ListPreference) findPreference(LIST_KEY);}@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;}private class MyOnSharedPreferenceChangeListener implements OnSharedPreferenceChangeListener {@Overridepublic void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {if (key.equals(A_KEY)) {// 更新String s = sharedPreferences.getString(A_KEY, "NULL");mEditTextPreference.setSummary(s);}if (key.equals(LIST_KEY)) {String e = mListPreference.getEntry() + "";String v = mListPreference.getValue();mListPreference.setSummary(e + " : " + v);}}}
}


运行结果:



相关文章和文档:
【1】《Android设置Settings实现:PreferenceActivity【1】》链接地址:http://blog.csdn.net/zhangphil/article/details/50154513
【2】《Android设置Settings:预读取设置的选项和更新设置结果【2】》链接地址:http://blog.csdn.net/zhangphil/article/details/50154707
【3】Android谷歌官方Settings开发文档:http://developer.android.com/guide/topics/ui/settings.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部