Android设置Settings:预读取设置的选项和更新设置结果【2】

简介:  Android设置Settings:预读取设置的选项和更新设置结果【2】本文在文章1的基础上,增加预读取历史的修改、设置值更新到设置选项中,同时,每一次更新都会实时更新到设置栏中。


 Android设置Settings:预读取设置的选项和更新设置结果【2】

本文在文章1的基础上,增加预读取历史的修改、设置值更新到设置选项中,同时,每一次更新都会实时更新到设置栏中。
 res/xml目录下的preferences.xml:

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

    <PreferenceCategory android:title="【第1组】" >
        <ListPreference
            android:dialogTitle="list dialog title"
            android:entries="@array/citys"
            android:entryValues="@array/citys"
            android:key="list_key"
            android:summary="list summary"
            android:title="list title" />
    </PreferenceCategory>
    <PreferenceCategory android:title="【第2组】" >
        <EditTextPreference
            android:defaultValue="缺省值1"
            android:key="edit_text_key_1"
            android:summary="edit summary"
            android:title="edit text 1" />

        <CheckBoxPreference
            android:defaultValue="true"
            android:key="checkbox_key"
            android:summary="checkbox summary"
            android:title="checkbox title" />
    </PreferenceCategory>

    <!-- 点击将浏览和打开网页 -->
    <Preference
        android:summary="http://blog.csdn.net/zhangphil"
        android:title="浏览网页" >
        <intent
            android:action="android.intent.action.VIEW"
            android:data="http://blog.csdn.net/zhangphil" />
    </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>


需要的res/values/arrays.xml:

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


上层Java代码:

package zhangphil.settings;

import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;

public class MainActivity extends PreferenceActivity {

	private MyOnSharedPreferenceChangeListener mOnSharedPreferenceChangeListener = new MyOnSharedPreferenceChangeListener();

	private EditTextPreference mEditTextPreference;
	private final String A_KEY = "edit_text_key_1";

	@Override
	protected 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);
	}

	@Override
	protected void onResume() {
		super.onResume();
		getPreferenceScreen().getSharedPreferences()
				.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
	}

	@Override
	protected void onPause() {
		super.onPause();
		getPreferenceScreen().getSharedPreferences()
				.unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
	}

	private class MyOnSharedPreferenceChangeListener implements OnSharedPreferenceChangeListener {

		@Override
		public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
			if (key.equals(A_KEY)) {
				// 更新
				String s = sharedPreferences.getString(A_KEY, "NULL");
				mEditTextPreference.setSummary(s);
			}
		}
	}
}



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


相关文章
|
21天前
|
Android开发
Android Mediatek 增加Recovery模式下读cmdline的强制工厂重置选项
Android Mediatek 增加Recovery模式下读cmdline的强制工厂重置选项
21 0
|
3月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
|
21天前
|
Java Android开发
Android系统 修改无源码普通应用为默认Launcher和隐藏Settings中应用信息图标
Android系统 修改无源码普通应用为默认Launcher和隐藏Settings中应用信息图标
52 0
|
6天前
|
Java Android开发 开发者
Android10 修改开发者选项中动画缩放默认值
Android10 修改开发者选项中动画缩放默认值
10 0
|
21天前
|
存储 Java Android开发
Android系统 设置第三方应用为默认Launcher实现和原理分析
Android系统 设置第三方应用为默认Launcher实现和原理分析
49 0
|
7天前
|
Java Shell Android开发
Android11 有线网和wifi优先级设置
Android11 有线网和wifi优先级设置
11 0
|
7天前
|
Java Android开发
Android 设置系统时区的源码追踪
Android 设置系统时区的源码追踪
11 1
|
4月前
|
网络安全 Android开发
2023安卓逆向 -- 抓包环境设置(Charles+Postern)
2023安卓逆向 -- 抓包环境设置(Charles+Postern)
48 0
|
5月前
|
XML 数据库 数据安全/隐私保护
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
45 0
|
5月前
|
XML Java Android开发
Android Studio App开发之通知渠道NotificationChannel及给华为、小米手机桌面应用添加消息数量角标实战(包括消息重要级别的设置 附源码)
Android Studio App开发之通知渠道NotificationChannel及给华为、小米手机桌面应用添加消息数量角标实战(包括消息重要级别的设置 附源码)
110 0