- 浏览: 2144981 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
Preference直译为偏好,博友建议翻译为首选项。一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依然有效,无须用户再一次进行配置或选择。Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据,并立时生效,同时Android提供一种类似的layout的方式来进行Prefernce的布局。
一个简单的Preferenece例子
步骤1:编写preference XML,在res/xml/下加入我们的preference XML文件,例如名字叫c21preference.xml
步骤2:在java源代码中调用该xml,生成相应的preference界面
和用layout方式一样,代码很简单。和以往界面最大的区别是,我们对checkbox进行选择或者对ringtone进行选择后,这个选择结果是被保留的,当我们退出actitvity后再次进入,上次的选项依然保留,我们重新向模拟器load应用,发现之前的选项仍然存在。我们可以利用preference,而无须人工对数据进行保存和读取,很是方便。
步骤3:获取preference的数据
处了在preference的界面中可以保留数据,我们也希望能够读出数据,以便这些数据可以用在其他的activity中。如果另一个activity和这些数据关联,而且希望能够实时进行同步,在onResume()中对preference保留的数据进行读取,而后进行相关的更新。
首先要获取preferences,然后通过键值对的获取方式根据key获取数值,在xml中checkbox的key为“checkbox”,值的类型为布尔值,而rintong的值为String,例如:
获取preferences可以通过三种方式:
一、getPreferences():可以获取同一activity中的preference;
二、getSharedPreferences():可以获取映用级别的preferences(),在这个例子中由于我们封装在同一app中,也可以使用SharePreferences prefs = getSharedPreferences( "com.wei.android.learning_preferences" ,0);其中第一个参数name的格式是<package_name>_preferences;
三、getDefaultSharedPreferences():就是我们例子的方式,通过Android的偏好管理器来获取其所管理的preferences。
Preferenece数据的操作
在上面的例子中,preference的数值会被保留,而且可以在其他的activity中读取。如果需要清除数据,可以通过remove()清除某个名字的prefernece,clear()清除所有的preferences。我们可以通过edit()获取preferences的editor,进而进行编辑,修改后,通过commit()将修改值保存。
Preferenece XML
Preference的XML可以通过PreferenceCategory来进行组织。PreferenceCategory可以将几个组建组合在一起,并加上标题。我们依然用前面的xml例子,通过PreferenceCategory来进行组织,如下:和之前的例子比较,将chekcbox和rintong组织成为一个category,并加上了"simple Preferences"的标题。
PreferenceCategory也可以嵌套PreferenceScreen,PreferenceScreen中的内容,将通过另一屏来显示,我们在上面例子后面添加一个嵌套了PreferenceScreen的PreferenceCategory。整个PreferenceScreen作为一个组件出现,点击后新的一屏,由入PreferenceScreen定义。通过这个关系,我们可以组织自己的preference架构。
在前面的例子中我们使用了CheckBox和Ringtong,在下面的例子,我们实验另外的两个组建EditText和List,这两种都是已弹框的方式。在上面的例子我们继续增加内容
在list中由两个引用@array/cities和@array/airport_codes,我们在资源文件中定义此两array。内容如下:
运行结果如上图所示。对于EditText,键值对保存的值是String,即用户在输入框中输入的内容。List的情况稍微复杂一些,在设置ListPreference的属性有一个entires,这是在List显示给用户看的内容,如果我们去获取preference的值,在这个例子为prefs.getString("list", "<unset>");,则返回在entryValues对应的数值,例如我们选择了第一个item:Pittsburgh,则获取的值为PHL。entries和entryValues是一一对应的。
示例下载
一个简单的Preferenece例子
步骤1:编写preference XML,在res/xml/下加入我们的preference XML文件,例如名字叫c21preference.xml
<?xml version="1.0" encoding="utf-8"?> <!-- preference的组织方式有PreferenceScreen和PreferenceCategory,PreferenceCategory是带层次组织关系,在后面的例子体验,而PreferenceScreen就是最平白和基础的方式 --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 有四个基本组建,这个例子学习两个。里面的内容对照图,很容易理解,RingtonePreference是选择铃音,这里给出两个选择,系统默认的铃音和无声 --> <CheckBoxPreference android:key="checkbox" android:title="CheckBox Preference" android:summary="Check it on , check it off"/> <RingtonePreference android:key="ringtone" android:title="Ringtone Preference" android:showDefault="true" android:showSilent="true" android:summary="Pick a tone, any tone"/> </PreferenceScreen>
步骤2:在java源代码中调用该xml,生成相应的preference界面
public class Chapter21Test1 extendsPreferenceActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.c21preference); } }
和用layout方式一样,代码很简单。和以往界面最大的区别是,我们对checkbox进行选择或者对ringtone进行选择后,这个选择结果是被保留的,当我们退出actitvity后再次进入,上次的选项依然保留,我们重新向模拟器load应用,发现之前的选项仍然存在。我们可以利用preference,而无须人工对数据进行保存和读取,很是方便。
步骤3:获取preference的数据
处了在preference的界面中可以保留数据,我们也希望能够读出数据,以便这些数据可以用在其他的activity中。如果另一个activity和这些数据关联,而且希望能够实时进行同步,在onResume()中对preference保留的数据进行读取,而后进行相关的更新。
首先要获取preferences,然后通过键值对的获取方式根据key获取数值,在xml中checkbox的key为“checkbox”,值的类型为布尔值,而rintong的值为String,例如:
protected void onResume() { //在另一个Activity中 super.onResume(); SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(this) ; System.out.println(new Boolean(prefs.getBoolean("checkbox",false)).toString());//false表示没有查到checkbox这个key的返回值 System.out.println(prefs.getString("ringtone","<unset>"));//<unset>表示没有查到ringtong这个key的返回值 }
获取preferences可以通过三种方式:
一、getPreferences():可以获取同一activity中的preference;
二、getSharedPreferences():可以获取映用级别的preferences(),在这个例子中由于我们封装在同一app中,也可以使用SharePreferences prefs = getSharedPreferences( "com.wei.android.learning_preferences" ,0);其中第一个参数name的格式是<package_name>_preferences;
三、getDefaultSharedPreferences():就是我们例子的方式,通过Android的偏好管理器来获取其所管理的preferences。
Preferenece数据的操作
在上面的例子中,preference的数值会被保留,而且可以在其他的activity中读取。如果需要清除数据,可以通过remove()清除某个名字的prefernece,clear()清除所有的preferences。我们可以通过edit()获取preferences的editor,进而进行编辑,修改后,通过commit()将修改值保存。
Preferenece XML
Preference的XML可以通过PreferenceCategory来进行组织。PreferenceCategory可以将几个组建组合在一起,并加上标题。我们依然用前面的xml例子,通过PreferenceCategory来进行组织,如下:和之前的例子比较,将chekcbox和rintong组织成为一个category,并加上了"simple Preferences"的标题。
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="Simple Preferences"> <CheckBoxPreference android:key="checkbox" ..../> <RingtonePreference android:key="ringtone" ... /> </PreferenceCategory> </PreferenceScreen>
PreferenceCategory也可以嵌套PreferenceScreen,PreferenceScreen中的内容,将通过另一屏来显示,我们在上面例子后面添加一个嵌套了PreferenceScreen的PreferenceCategory。整个PreferenceScreen作为一个组件出现,点击后新的一屏,由入PreferenceScreen定义。通过这个关系,我们可以组织自己的preference架构。
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="Simple Preferences"> <CheckBoxPreference android:key="checkbox" ..../> <RingtonePreference android:key="ringtone" ... /> </PreferenceCategory> <PreferenceCategory android:title="Detail Screens"> <PreferenceScreen android:title="Detail" android:summary="Addtional preference help in another page"> <CheckBoxPreference android:key="checkbox2" android:title="Another Checkbox" android:summary="On or Off, It's a problem...."/> </PreferenceScreen> </PreferenceCategory> </PreferenceScreen>
在前面的例子中我们使用了CheckBox和Ringtong,在下面的例子,我们实验另外的两个组建EditText和List,这两种都是已弹框的方式。在上面的例子我们继续增加内容
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen ...> ...... <PreferenceCategory android:title="Other Preferences"> <EditTextPreference android:key="text" android:title="Text Entry Dialog" android:summary="Click to pop up a field for entry" android:dialogTitle="Enter something useful"/> <ListPreference android:key="list" android:title="Selection Dialog" android:summary="Click to pop yo a list for select" android:entries="@array/cities" android:entryValues="@array/airport_codes" android:dialogTitle="Choose a City"/> </PreferenceCategory> </PreferenceScreen>
在list中由两个引用@array/cities和@array/airport_codes,我们在资源文件中定义此两array。内容如下:
<resource> <string-array> <item>Pittsburgh</item> <item>Allentown/Bethlehem</item> <item>Erie</item> ... ... </string-array> <string-array name="airport_codes"> <item>PHL</item> <item>PIT</item> <item>ABE</item> ... ... </string-array> </resources>
运行结果如上图所示。对于EditText,键值对保存的值是String,即用户在输入框中输入的内容。List的情况稍微复杂一些,在设置ListPreference的属性有一个entires,这是在List显示给用户看的内容,如果我们去获取preference的值,在这个例子为prefs.getString("list", "<unset>");,则返回在entryValues对应的数值,例如我们选择了第一个item:Pittsburgh,则获取的值为PHL。entries和entryValues是一一对应的。
示例下载
- android-preference.rar (12.4 KB)
- 下载次数: 4
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 567本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1026颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 925从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1032Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 901Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 766前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 853监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 728在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 826最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1225##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 998当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 676setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1402问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 679底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1661点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1289import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2199TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1447一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 790Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 887最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
Android学习笔记(四十):Preference的使用
这是Pro Android学习系列中preference部分的例子源代码。
Android中Preference的使用以及监听事件分析
Android中preference的使用,使用详解.
上篇博文代码实现了Android自带的preference组件,本文将通过实例讲解自定义preference组件。 主要通过以下几步来实现: 1.定义需要的layout布局res->layout->xml文件; 2.通过继承Preference类,来实现自定义...
android Preference自定义样式
安卓Android源码——Preference_Demo.rar
Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据,并立时生效,同时Android提供一种类似的layout的方式来进行Preference的布局。 Preference组件有ListPreference,EditTextPreference,...
Preference,比如系统设置、短信都可以使用,简单而又好使用,而且Google原生Android代码中大量的使用了Preference组件。简单说, Preference组件其实就是Android常见UI组件与SharePreferences的组合封装实现。
android各种Preference的使用
恺风2013-12-04上传的Pro Android学习系列中preference部分的例子源代码; 测试第7个例子,大屏的盒子不能使用,做了一些修改,特此分享; 由于原作者有使用资源分,如果我免费的话会影响他的下载,所以我也加1分,...
Android应用源码之Preference_Demo.zip项目安卓应用源码下载Android应用源码之Preference_Demo.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
android-support-v7-preference.jar
如果没有特殊要求,我们可以使用Android提供的框架来创建系统样式的Preference Screen,在其内部可以包含PreferenceCategory和Preference元素的任意组合。建立Preference Screen,需要向里面添加首选项控件,原生的...
导语:PreferenceActivity是一个方便设置管理的界面,但是对于界面显示来说比较...使用Preference的android:@layout属性 1)xml文件中preference的添加 代码如下: <Preference android:layout=”@layout/youmi_ad”
Based on support-preference from Android Support Library, adding a lot of exciting features. Sample How to use add dependencies // replace with version above implementation 'moe.shizuku.preference...
此DEMO内含基本的android preference framework的简单介绍,包括CheckboxPreference, RingtonePreference, EditTextPreference以及...主要探究了一下android 怎么通过使用preference从而达到对用户定制的数据进行保存。
Android Preference Framework源码~~~~~~~~~~~~~~~~~
Material Preference Library uses com.android.support:preference-v7:x.x.x support library widgets. Also it includes a color chooser dialog widget, that can be used to select accent color . Header is ...