保存设置的PreferenceActivity

本文介绍了一个具体的Android应用偏好设置界面的实现方式,包括XML配置文件的结构和PreferenceActivity的使用方法,展示了如何通过CheckBoxPreference和EditTextPreference来收集用户的个性化设置。

界面XML文件:preference_setting.xml

<?xml version="1.0" encoding="UTF-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="我的位置源"> <CheckBoxPreference android:key="my_wireless_network" android:title="使用无线电" android:summary="使用无线网络查看应用程序(例如Google地图)中的位置" /> <CheckBoxPreference android:key="my_gps_satellite_setting" android:title="启用GPS卫星设置" android:summary="定位时,精确到街道级别(取消选择可节约电量)" /> </PreferenceCategory> <PreferenceCategory android:title="个人信息设置"> <CheckBoxPreference android:key="my_yesno_save_individual_info" android:title="是否保存个人信息" /> <EditTextPreference android:key="my_individual_name" android:title="姓名" android:summary="请输入真实姓名" /> <PreferenceScreen android:key="my_other_individual_msg" android:title="其他个人信息" android:summary="是否工作、手机"> <CheckBoxPreference android:key="my_is_an_employee" android:title="是否工作" /> <EditTextPreference android:key="my_mobile" android:title="手机" android:summary="请输入您的手机号码" /> </PreferenceScreen> </PreferenceCategory> </PreferenceScreen>

PreferenceActivity 的类文件:

package com.icitylife.preference; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.preference.Preference.OnPreferenceChangeListener; public class Main extends PreferenceActivity implements OnPreferenceChangeListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置PreferenceActivity保存数据使用的XML文件的名称 getPreferenceManager().setSharedPreferencesName("mySetting"); //加载XML资源文件:此处就不能使用Activity的setContentView() addPreferencesFromResource(R.xml.preference_setting); //获取【姓名】设置项对应的Preference对象 Preference individualNamePreference=findPreference("my_individual_name"); //获得指向mySetting.xml文件的SharedPreference对象 SharedPreferences sharedPreferences=individualNamePreference.getSharedPreferences(); //设置【姓名】设置项的summary individualNamePreference.setSummary(sharedPreferences.getString("my_individual_name","")); //判断【是否保存个人信息】设置项是否被选中 if(sharedPreferences.getBoolean("my_yesno_save_individual_info",false)){ individualNamePreference.setEnabled(true); }else{ individualNamePreference.setEnabled(false); } individualNamePreference.setOnPreferenceChangeListener(this); //获得【电话号码】设置项对应的Preference对象 Preference mobileNamePreference=findPreference("my_mobile"); SharedPreferences mobileSharedPreferences=mobileNamePreference.getSharedPreferences(); //设置【电话号码】的summary mobileNamePreference.setSummary(mobileSharedPreferences.getString("my_mobile","")); mobileNamePreference.setOnPreferenceChangeListener(this); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { preference.setSummary(String.valueOf(newValue)); return true; } /** * 处理【是否保存个人信息】的改变事件 */ @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference){ if("my_yesno_save_individual_info".equals(preference.getKey())){ findPreference("my_individual_name").setEnabled(!findPreference("my_individual_name").isEnabled()); } return super.onPreferenceTreeClick(preferenceScreen, preference); } }

工程下载地址:http://good.gd/1062674.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值