首页 Android的配置界面PreferenceActivity

Android的配置界面PreferenceActivity

举报
开通vip

Android的配置界面PreferenceActivityAndroid的配置界面PreferenceActivity 2012年01月06日09:29 来源:cnblogs 作者:东子哥 编辑:景保玉 评论:0条   【IT168技术】我想大家对于android的系统配置界面应该不会陌生吧,即便陌生,那么下面的界面应该似曾相识吧,假若还是不认识,那么也没有关系,我们这一节主要就是介绍并讲解android 中系统配置界面的使用,相信大家看完本节后,一定能知道怎么使用这些东西了。         从上述界面中(其实是一个界面),我们可以看到有2组元素,第一组为:自动...

Android的配置界面PreferenceActivity
Android的配置界面PreferenceActivity 2012年01月06日09:29 来源:cnblogs 作者:东子哥 编辑:景保玉 评论:0条   【IT168技术】我想大家对于android的系统配置界面应该不会陌生吧,即便陌生,那么下面的界面应该似曾相识吧,假若还是不认识,那么也没有关系,我们这一节主要就是介绍并讲解android 中系统配置界面的使用,相信大家看完本节后,一定能知道怎么使用这些东西了。         从上述界面中(其实是一个界面),我们可以看到有2组元素,第一组为:自动更新,更新频率。第二组为:是否登录,账号,密码。   其实分组是为了方便管理而已。这里主要使用到了选择,列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf ,编辑框等Preference.   我们还是来温习下基础知识吧。   一.基础知识   通常我们开发一个程序时,会需要给用户提供一个设置界面,使用户可以对程序的一些参数进行设置。通常我们使用Preferences的键值对存储方式,来对Android数据持久化。   android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据。有三种方式可以获取系统中持久化的数据,这些数据时存放在.xml中的:   1:public SharedPreferences getPreferences (int mode),只隶属于activity对象,并以这个对象为文件名。   2:public SharedPreferences getSharedPreferences (String name, int mode),隶属于整个应用,以name名称保存。   3:public static SharedPreferences getDefaultSharedPreferences (Context context),隶属于整个应用,保存PreferenceActivity中的设置,根据包名和PreferenceActivity的布局文件来起一个名字保存。   SharedPreferences可以保存Boolean、Int、Float、Long、String等类型。一般是SharedPreferences.Editor的putXXX() 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 保存,并commit()方法提交;或者是remove(),方法移除,clear()方法清空,当然操作完毕后需要commit()方法提交。   一般的,可以使用SharedPreferences保存持久化数据,比如登陆账号,密码,以及相对固定设置参数等等,看你应用需要。   既然使用到设置参数界面,那么我们可以来认识下一下几个类标签:   1:PreferenceScreen 持久化设置界面的顶级容器,代表一屏,里面可以嵌套屏幕,嵌套的时候可以点击跳转到另外一屏。   2:PreferenceCategory 当前屏的分组容器,说白了,就是为了划分组而已。   3:CheckBoxPreference,ListPreference,EditTextPreference等等组件。这些都是常见的对应上述的选择标签、列表标签、编辑标签。   上述组件都有titile,summary,key属性。title标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 描述,summary:详细描述,key:保存SharedPreferences时候的键。   二.实战   既然有了上述基础知识后,我们就可以来做如上的设置界面了,在上述界面中,我们知道当前配置界面只需一屏,没有额外的跳转,那么需要PreferenceScreen,不需要嵌套其他PreferenceScreen,而设置界面分为两栏,那么需要两个PreferenceCategory,并且这个PreferenceCategory可以设置标题。同时根据界面,我们还需要CheckBoxPreference,ListPreference,EditTextPreference等。操作如图:         当然了,我们还是实际操作下吧,然后实际联系理论(理论联系实际太抽象),我们首先编写使用工具选择标签,然后形成代码,存放在xml文件夹中,如下:   当然这里使用到了一些文件,代码一并释放: Hello World, PreferenceActivityDemoActivity! PreferenceActivityDemo 取消 其他 设置 更新 自动更新 自动更新设置 开启自动更新 关闭自动更新 更新频率 设置更新周期 是否匿名登录 帐号 密码 提供您帐号 提供您密码 update_key auto_update_frequency_key isneilflag_key username_key password_key 10分钟 30分钟 1小时 12小时 10 30 60 720   接下来,我们就来解释下xml文件夹中设置文件的一些内容吧:   android:key="@string/update_key" 这个是我们持久化时SharedPreferences保存的键,   android:summaryOn="@string/auto_update_switch_summary_on" 选中后显示内容   android:summaryOff="@string/auto_update_switch_summary_off" 未选中后显示内容   android:summary="@string/auto_update_setting" 平常状态显示内容   android:title="@string/auto_update_switch_title" 标题   android:defaultValue="true" 默认值   android:dialogTitle="@string/auto_update_frequency_title" 对话框标题   android:entries="@array/auto_frequency_name" 列表项显示名称   android:entryValues="@array/auto_frequency_value" 列表项值   android:disableDependentsState="true" 当CheckBoxPreference的值为真的时候,禁用依赖于该设置的其他设置项。   android:dependency="@string/isneilflag_key" 根据上述设置依赖于CheckBoxPreference的真值进行启用与禁用。   注意:我们可以从上图知道ListPreference是继承之Preference,以及DialogPreference的,那么就有它们的属性以及方法了。   好了,设置界面已经定义完成,我们来定义一个activity继承之PreferenceActivity,并使之显示吧。   当然噩梦可以再使之继承接口OnPreferenceChangeListener,OnPreferenceClickListener,当PreferenceActivity中的某一个Preference进行了点击或者改变的操作时,都会回调接口中的函数。   具体代码如下: package com.dongzi; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceManager; import android.preference.PreferenceActivity; import android.util.Log; public class PreferenceActivityDemoActivity extends PreferenceActivity implements OnPreferenceChangeListener,OnPreferenceClickListener{ static final String TAG="PreferenceActivityDemoActivity"; SharedPreferences preference=null; CheckBoxPreference updateCheckBoxPreference=null; ListPreference lististPreference=null; CheckBoxPreference isneilflag_CheckBoxPreference=null; EditTextPreference usernameEditTextPreference=null; EditTextPreference passwordEditTextPreference=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置显示Preferences addPreferencesFromResource(R.xml.preference); //获得SharedPreferences preference=PreferenceManager.getDefaultSharedPreferences(this); //找到preference对应的Key标签并转化 updateCheckBoxPreference=(CheckBoxPreference)findPreference(getString(R.string.update_key)); lististPreference=(ListPreference)findPreference(getString(R.string.auto_update_frequency_key)); isneilflag_CheckBoxPreference=(CheckBoxPreference)findPreference(getString(R.string.isneilflag_key)); usernameEditTextPreference=(EditTextPreference)findPreference(getString(R.string.username_key)); passwordEditTextPreference=(EditTextPreference)findPreference(getString(R.string.password_key)); //为Preference注册监听 updateCheckBoxPreference.setOnPreferenceChangeListener(this); updateCheckBoxPreference.setOnPreferenceClickListener(this); lististPreference.setOnPreferenceClickListener(this); lististPreference.setOnPreferenceChangeListener(this); isneilflag_CheckBoxPreference.setOnPreferenceChangeListener(this); isneilflag_CheckBoxPreference.setOnPreferenceClickListener(this); usernameEditTextPreference.setOnPreferenceChangeListener(this); passwordEditTextPreference.setOnPreferenceChangeListener(this); } @Override public boolean onPreferenceClick(Preference preference) { //判断是哪个Preference改变了 if(preference.getKey().equals(getString(R.string.update_key))){ Log.e(TAG, getString(R.string.update_key)); }else if(preference.getKey().equals(getString(R.string.isneilflag_key))){ Log.e(TAG, getString(R.string.isneilflag_key)); } //返回true表示允许改变 return true; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { //判断是哪个Preference改变了 if(preference.getKey().equals(getString(R.string.username_key))){ //账号 Log.e(TAG, getString(R.string.username_key)); }else if(preference.getKey().equals(getString(R.string.password_key))){ //密码 Log.e(TAG, getString(R.string.password_key)); }else if(preference.getKey().equals(getString(R.string.auto_update_frequency_key))){ //列表 Log.e(TAG, getString(R.string.auto_update_frequency_key)); } //返回true表示允许改变 return true; } }   从上述代码可知:   1:设置显示Preferences可以调用方法addPreferencesFromResource(R.xml.preference); 传递preference文件即可。   2:然后通过findPreference();方法找到键的类标签   3:我们定义2个监听接口监听参数是否设置成功。   4:在监听接口中返回true就是设置允许提交。   结果打印如下:      成功!   也许你会问,我们这里并没有使用   SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);   settings.getXXXX();settings.putXXXX();以及commit()等方法,设置、获取并提交值啊?!是的,在这里我们不需这样,因为   当PreferenceActivity中的内容改变时,Android系统会自动进行保存和持久化维护,我们只需要在要用的设置界面中数据的地方进行读取就可以了。   当然,您可以在其他界面使用SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);等类方法来获取数据,看能不能获取到.
本文档为【Android的配置界面PreferenceActivity】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_845946
暂无简介~
格式:doc
大小:274KB
软件:Word
页数:11
分类:互联网
上传时间:2012-06-27
浏览量:22