在使用android手机的时候,尤其是在操作软件设置时,我们经常见到这样的界面:

这是怎么来实现的的呢?其实android已经提供了相应的类和方法,当进行简单数据存储时(比如:软件配置参数)android推荐使用Preferences,当然如果想提供操作界面的话就要用到PreferencesActivity。我这里先做个小例子对来简单说明一下使用方法,由于没做准备,可能讲的不系统,以后补上。

首先:新建一个android工程,在其res文件夹下新建一个xml文件夹,用来存储我们的PreferencesActivity需要展示的界面。

然后在xml文件夹下新建一个xml文件,名字随意去,这里我建的名字叫:setting.xml

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="分组一"> <Preference android:key="Already" android:title="本地" android:summary="管理本地"/> </PreferenceCategory> <PreferenceCategory android:title="分组二"> <ListPreference android:key="CellCount" android:title="行列数选择" android:defaultValue="3" android:entries="@array/settings_cell_count" android:entryValues="@array/settings_cell_values" /> </PreferenceCategory> <PreferenceCategory android:title="@string/settings_cat_drawer"> <ListPreference android:key="CurrentDrawerSortOrder" android:title="@string/settings_drawer_sorting" android:defaultValue="1" android:entries="@array/settings_sorting_names" android:entryValues="@array/settings_sorting_values" /> <CheckBoxPreference android:title="CheckBox" android:summary="check!!!!!!!!!!" android:key="check"></CheckBoxPreference> <EditTextPreference android:title="EditText" android:summary="edit!!!!!!!!!!" android:key="edit"></EditTextPreference> </PreferenceCategory> </PreferenceScreen>

当然titl之类的名字都可以采用"@string/settings_drawer_sorting"的方式引用我们自己定义的名字,这里为了简单直接写上去了(不推荐)。title是上面亮白的大字,summary是title下面的小字说明,字数不要太多啊,它的显示空间是固定的,多了也显示不出来。

里面填充的数据我就不写了,应该都会的吧,不会的可以自己百度一下android array的使用与定义吧。

那么,我们怎么把这个xml显示出来呢?

需要新建一个Activity继承PreferencesActivity,下面是具体代码:

package com.preference.demo; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.util.Log; public class PreferenceDemo extends PreferenceActivity{ static final String MANAGER_LOCATION_THEME= "Already";//组件的key值,要对应啊 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.addPreferencesFromResource(R.xml.setting);//引入我们的xml } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { // TODO Auto-generated method stub String key=preference.getKey();//获取当前触发动作组件的key值 if(key.equals(MANAGER_LOCATION_THEME)){//根据key值不同进行自己的操作,这里只是拦取了一个做个示例 Log.i("xml","already_exsting_theme"); } return super.onPreferenceTreeClick(preferenceScreen, preference); } } //我只是打印了一下log,结果如下图:

运行效果图如下:

点击本地打印log,log截图:

我们还可以在需要的地方读取xml里的值,我会在后续的文章里说一下,如果等不及的可以自己百度一下Preferences的使用,我们自己写的xml实际上就是Preferences的使用,其数据的读取方式是一样的。

该文章写得过于仓促,内容很简陋,如果有什么错误或表达不当的地方请留言,一定改,拜谢各位。

android中PreferencesActivity的使用(一)相关推荐

  1. android中SharedPreferences和PreferenceActivity的存取数据

    本文主要介绍SharedPreferences和PreferenceActivity的基础知识和用法. 主要资料来源于网络,包括但不限于: <Android之PreferenceActivity ...

  2. Android中实现为TextView添加多个可点击的文本

    这篇文章主要介绍了Android中实现为TextView添加多个可点击的文本,可实现类似Android社交软件显示点赞用户并通过用户名称进入该用户主页的功能,是非常实用的技巧,需要的朋友可以参考下.具 ...

  3. android 弹出fragment,Android中ViewPager获取当前显示的Fragment

    前言 在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment ...

  4. android 读取内部存储文件格式,Android中的数据储存之文件存储

    当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互 例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢 ...

  5. android中一种不支持的lua操作

    今天写了一段lua代码,在win32中正常运行,在android中运行无效. 大概是这样的: ------file1.lua----- local t = {} t.str = "this ...

  6. Android中对Log日志文件的分析[转]

    一,Bug出现了, 需要"干掉"它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只 ...

  7. 在Android中进行单元测试遇到的问题

    问题1.Cannot connect to VM  socket closed 在使用JUnit进行测试的时候,遇到这个问题.网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还 ...

  8. android中设置控件获得焦点 (转)

    android中,要使控件获得焦点,需要先setFocus,再requestFocus. 以Button为例:                 btn.setFocusable(true);      ...

  9. Android中怎么使图片显示

    android中经常到利用图片,利用图片时我们都是把图片放在drawable-xxx目录下,因为这里就是存储图片的地方,xxx不用理他,就是关于分辨率而已. 楼主在学习android的时候一直尝试把图 ...

最新文章

  1. 待遇46K起,这几个公众号在招人!
  2. 一图看懂windows11新功能
  3. python服务器查看文件更改记录,Python记录到同一文件,不同用户
  4. 入门 | 机器学习第一课:决策树学习概述与实现
  5. react学习(20)---发送参数
  6. 在vue项目中导入element-ui
  7. 部署Symantec Antivirus 10.0网络防毒服务器之二
  8. 使用root登陆到mysql后执行_如何让mysql以root用户远程登陆mysql数据库
  9. 章节3.4----队列的实现与应用
  10. idea debug collecting 卡死
  11. find命令 、 文件名后缀
  12. ckplayer6.8 php播放,ckplayer超酷网页视频播放器 6.8
  13. AddressSanitizer: heap-buffer-overflow on address 0x602000000534 at pc 0x00000040699d bp 0x7ffce0afd
  14. Elasticsearch索引yellow修复
  15. 教你一键开发桌面应用程序
  16. java字符串Emoji表情的处理
  17. 简单工厂—工厂方法—抽象工厂
  18. Linux双网卡:一个配置外网,一个配置内网
  19. 《电磁学》学习笔记5——磁场强度H
  20. 如何写出一份高质量的数据分析师的简历?

热门文章

  1. Swift 中的内存管理详解
  2. rabbitmq可靠发送的自动重试机制 --转
  3. 【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战
  4. 《Python数据可视化编程实战》——5.5 用OpenGL制作动画
  5. 总结:如何使用redis缓存加索引处理数据库百万级并发
  6. 软考之CPU的寻址方式
  7. (11)Xamarin.iOS - 新增iPhone storyboard
  8. 程序设计分析(开篇)——混沌初开,顿悟设计
  9. xmpp 开源项目选择_如何选择和维护安全的开源项目
  10. Fiddler使用技巧:强大的数据文本编解码功能