博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android保存设置的PreferenceActivity
阅读量:5046 次
发布时间:2019-06-12

本文共 4326 字,大约阅读时间需要 14 分钟。

界面XML文件:preference_setting.xml

[java]
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <PreferenceCategory android:title="我的位置源">  
  4.         <CheckBoxPreference  
  5.             android:key="my_wireless_network"  
  6.             android:title="使用无线电"  
  7.             android:summary="使用无线网络查看应用程序(例如Google地图)中的位置"  
  8.         />  
  9.         <CheckBoxPreference  
  10.             android:key="my_gps_satellite_setting"  
  11.             android:title="启用GPS卫星设置"  
  12.             android:summary="定位时,精确到街道级别(取消选择可节约电量)"  
  13.         />  
  14.     </PreferenceCategory>  
  15.       
  16.     <PreferenceCategory android:title="个人信息设置">  
  17.         <CheckBoxPreference  
  18.             android:key="my_yesno_save_individual_info"  
  19.             android:title="是否保存个人信息"  
  20.         />  
  21.         <EditTextPreference  
  22.             android:key="my_individual_name"  
  23.             android:title="姓名"  
  24.             android:summary="请输入真实姓名"  
  25.         />  
  26.         <PreferenceScreen   
  27.             android:key="my_other_individual_msg"  
  28.             android:title="其他个人信息"  
  29.             android:summary="是否工作、手机">  
  30.             <CheckBoxPreference  
  31.                 android:key="my_is_an_employee"  
  32.                 android:title="是否工作"  
  33.             />  
  34.             <EditTextPreference  
  35.                 android:key="my_mobile"  
  36.                 android:title="手机"  
  37.                 android:summary="请输入您的手机号码"  
  38.             />  
  39.         </PreferenceScreen>  
  40.     </PreferenceCategory>  
  41. </PreferenceScreen>  

<?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 的类文件:

[java]
  1. package com.icitylife.preference;  
  2.   
  3. import android.content.SharedPreferences;  
  4. import android.os.Bundle;  
  5. import android.preference.Preference;  
  6. import android.preference.PreferenceActivity;  
  7. import android.preference.PreferenceScreen;  
  8. import android.preference.Preference.OnPreferenceChangeListener;  
  9.   
  10. public class Main extends PreferenceActivity implements OnPreferenceChangeListener {  
  11.     /** Called when the activity is first created. */  
  12.     @Override  
  13.     public void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         //设置PreferenceActivity保存数据使用的XML文件的名称  
  16.         getPreferenceManager().setSharedPreferencesName("mySetting");  
  17.         //加载XML资源文件:此处就不能使用Activity的setContentView()  
  18.         addPreferencesFromResource(R.xml.preference_setting);  
  19.         //获取【姓名】设置项对应的Preference对象  
  20.         Preference  individualNamePreference=findPreference("my_individual_name");  
  21.         //获得指向mySetting.xml文件的SharedPreference对象  
  22.         SharedPreferences sharedPreferences=individualNamePreference.getSharedPreferences();  
  23.         //设置【姓名】设置项的summary  
  24.         individualNamePreference.setSummary(sharedPreferences.getString("my_individual_name",""));  
  25.         //判断【是否保存个人信息】设置项是否被选中  
  26.         if(sharedPreferences.getBoolean("my_yesno_save_individual_info",false)){  
  27.             individualNamePreference.setEnabled(true);  
  28.         }else{  
  29.             individualNamePreference.setEnabled(false);  
  30.         }  
  31.         individualNamePreference.setOnPreferenceChangeListener(this);  
  32.         //获得【电话号码】设置项对应的Preference对象  
  33.         Preference mobileNamePreference=findPreference("my_mobile");  
  34.         SharedPreferences mobileSharedPreferences=mobileNamePreference.getSharedPreferences();  
  35.         //设置【电话号码】的summary  
  36.         mobileNamePreference.setSummary(mobileSharedPreferences.getString("my_mobile",""));  
  37.         mobileNamePreference.setOnPreferenceChangeListener(this);  
  38.     }  
  39.   
  40.     @Override  
  41.     public boolean onPreferenceChange(Preference preference, Object newValue) {  
  42.         preference.setSummary(String.valueOf(newValue));  
  43.         return true;  
  44.     }  
  45.       
  46.     /** 
  47.      * 处理【是否保存个人信息】的改变事件 
  48.      */  
  49.     @Override  
  50.     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,  
  51.             Preference preference){  
  52.         if("my_yesno_save_individual_info".equals(preference.getKey())){  
  53.             findPreference("my_individual_name").setEnabled(!findPreference("my_individual_name").isEnabled());  
  54.         }  
  55.         return super.onPreferenceTreeClick(preferenceScreen, preference);  
  56.     }  
  57. }  

转载于:https://www.cnblogs.com/Free-Thinker/p/3675847.html

你可能感兴趣的文章
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
关于Redis处理高并发
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
asp.net core 系列 16 Web主机 IWebHostBuilder
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>
bzoj1230 开关灯 线段树
查看>>
LinearLayout
查看>>
学习python:day1
查看>>