关于prefrenceactivity和preferencefragment的作用
在使用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的使用,其数据的读取方式是一样的。
该文章写得过于仓促,内容很简陋,如果有什么错误或表达不当的地方请留言,一定改,拜谢各
关于prefrenceactivity和preferencefragment的作用相关推荐
- PreferenceFragment的简单使用
在4.0中使用 PreferenceActivity 的addPreferencesFromResource(R.xml.*); 提示过期,经查证,新的替代为 PreferenceFragment,所 ...
- Object的finalize()方法的作用是否与C++的析构函数作用相同
Object的finalize()方法的作用是否与C++的析构函数作用相同 public class Finalization {private static Finalization finaliz ...
- 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin
1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...
- 【B/S实践】解决:vs中修改样式表后不起作用的问题
缓存,有好多,cpu和内存之间的三级缓存,浏览器内的缓存! 缓存是因为速率不对等,通过缓存来加速内容的显示! 今天我在敲牛腩的时候遇到一个问题,找了半小时,才发现是缓存导致的问题! 试着运行aspx文 ...
- 卷积神经网络之卷积计算、作用与思想 深度学习
博客:blog.shinelee.me | 博客园 | CSDN 卷积运算与相关运算 在计算机视觉领域,卷积核.滤波器通常为较小尺寸的矩阵,比如3×33×3.从这个角度看,多层卷积是在进行逐层映射,整 ...
- 机器学习——标准化/归一化的目的、作用和场景
对每个特征进行归一化处理,使得每个特征的取值缩放到0~1之间.这样做有两个好处: 模型训练更高效. 特征前的权重大小可代表该变量对预测结果的贡献度(因为每个特征值本身的范围相同). (一)归一化的作用 ...
- Linux操作系统下文件作用
linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ...
- python sys.argv[] 的作用
sys.argv[]是什么 argv 是sys库里面的所以使用的 需要先引入sys (使用import sys) sys.argv[]的作用 从程序外获取参数,怎样理解呢,例如在终端中运行test脚本 ...
- C++ namespace 的作用以及使用
namespace 是什么: 命名空间(namespace)是一种描述逻辑分组的机制,可以将按某些标准在逻辑上属于同一个任务中的所有类声明放在同一个命名空间中.标准C++库(不包括标准C库)中所包含的 ...
最新文章
- c++ 宽搜(倒水)
- Linux-正则表达式学习(精)
- Loj2687,jzoj3320-文本编辑器【线头dp】
- 【OS学习笔记】十九 保护模式六:保户模式下操作系统内核如何加载用户程序并运行
- h5跳转小程序页面url_小程序和h5跳转
- C++模式-Proxy
- 浏览器打印设置横向打印_hp打印机共享怎么设置 hp打印机共享设置方法【详解步骤】...
- 求一个数因数个数c语言,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
- Confluence 附件(Attachments)宏
- Google Earth Pro v7.3.6.9285 谷歌地球卫星图像专业版
- Java是什么?Java能干嘛?
- java输入输出26:IO流(对象操作流ObjecOutputStream)
- 友盟用户反馈(官方文档学习而来)
- codeforces1379B Dubious Cyrpto
- 联想计算机不能进入系统桌面,win10电脑开机后进不了系统桌面只有联想logo
- 百度智能云在线活体检测
- allow control allow origin_热分析/红外光谱联用的数据分析方法 第7部分 在Origin软件中三维红外光谱图的作图方法...
- Linux内核功能模块图
- 【Simulink教程案例1】基于Simulink的PID控制器设计与实现
- 服务器项目实施计划时间,项目详细实施计划方案_模板-20210804234116.docx-原创力文档...
热门文章
- C# 网络编程之webBrowser乱码问题及解决知识
- iOS之获取手机的系统信息
- 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - B. 矩形切割
- Client does not support authentication protocol requested by server;
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1095:数1的个数
- 在VS中创建多个项目
- 【Linux】一步一步学Linux——ldd命令(251)
- 【Linux网络编程】浅谈 TCP 三次握手和四次挥手
- oracle几个状态,oracle启动的四个状态
- 三角网导线平差实例_导线测量平差实例