PreferenceActivity简单使用app设置页

PreferenceActivity一般用来实现app的设置页

如图:























PreferenceActivity就是用SharedPreference的形式存储用户的偏好设置。 

PreferenceActivity通过读取xml的方式来显示页面,控件都是封装好的,实用起来特别方便。 

1.先在res下新建一个xml文件 preference.xml


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

    <PreferenceCategory android:title="FirstCategory" >//分割线隔开的一个一个分类
        <ListPreference
            android:defaultValue="list key default values"
            android:dialogTitle="list_dialog_title"
            android:entries="@array/list_array"
            android:entryValues="@array/list_array"          //单选的list
            android:key="list_key"
            android:summary="list summary"
            android:title="list title" >
        </ListPreference>
    </PreferenceCategory>
    <PreferenceCategory android:title="Second Category" >
        <EditTextPreference
            android:defaultValue="edit default value"
            android:key="edit_text_key"                      //编辑框样式
            android:summary="edit summary"
            android:title="edit_title" >
        </EditTextPreference>

        <CheckBoxPreference
            android:defaultValue="checkbox default value"
            android:key="checkbox_key"
            android:summary="checkbox_summary"                //复选框样式
            android:title="checkbox_title" />

        <EditTextPreference
            android:defaultValue="0"
            android:key="num_key"
            android:numeric="integer"
            android:summary="edit summary"
            android:title="input number" />

        <PreferenceScreen
            android:summary="more..."
            android:title="more" >
            <PreferenceCategory android:title="more_title" >      //嵌套一个根节点,实际点击的时候跳转新的一个屏幕
                <CheckBoxPreference
                    android:defaultValue="abcd"
                    android:key="more_key"
                    android:summary="more_key"
                    android:title="MORE" />
            </PreferenceCategory>
        </PreferenceScreen>
    </PreferenceCategory>

</PreferenceScreen>

2.新建MyPreferenceActivity 继承 PreferenceActivity

在onCreatefang方法中addPreferencFromResource(int id)加载xml

实例化,实现OnSharedPreferenceChangeListener当值发生变化是可改变控件的值,

在onResum中初始化控件的值

public class MyPreferenceActivity extends PreferenceActivity implements
		OnSharedPreferenceChangeListener {
	private ListPreference mListPreference;
	private EditTextPreference mEditTextPreference, mNumPreference;
	private CheckBoxPreference mBoxPreference;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.preference);
		initPreference();
	}

	private void initPreference() {
		mListPreference = (ListPreference) findPreference("list_key");
		mEditTextPreference = (EditTextPreference) findPreference("edit_text_key");
		mNumPreference = (EditTextPreference) findPreference("num_key");
		mBoxPreference = (CheckBoxPreference) findPreference("checkbox_key");
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		SharedPreferences mSharedPreferences = getPreferenceScreen()
				.getSharedPreferences();
		mListPreference
				.setSummary(mSharedPreferences.getString("list_key", ""));
		mEditTextPreference.setSummary(mSharedPreferences.getString(
				"edit_text_key", ""));
		// mNumPreference.setSummary(mSharedPreferences.getInt("num_key", 0));
		// mBoxPreference.setSummary(mSharedPreferences.getString("checkbox_key",
		// ""));
		mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		getPreferenceScreen().getSharedPreferences()
				.unregisterOnSharedPreferenceChangeListener(this);
	}

	@Override
	public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
		if (arg1.equals("edit_text_key")) {
			mEditTextPreference.setSummary(arg0
					.getString("edit_text_key", "20"));
		} else if (arg1.equals("list_key")) {
			mListPreference.setSummary(arg0.getString("list_key", ""));
		}

	}
}

 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值