使用Preference保存设置


Android中有四种持久化数据的方法:SQLite数据库、文件存储、Preference、ContentProvider。

四种方法各有专攻,而其中Preference是以类似Map的键值对形式存储的,最适合用来保存用户个人设置之类的信息。


可以用一个xml文件来配置一个设置界面,然后用专门的PreferenceActivity将其显示。PreferenceActivity是专业的设置界面,只要给它指定一个配置好的xml,它就能自动根据操作更改程序Preference的相应值。

比如在res目录下建立一个xml文件夹,然后新建一个seeting.xml文件,内容如下:

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <CheckBoxPreference  
  5.         android:defaultValue="false"  
  6.         android:key="boolean_value"  
  7.         android:summary="保存一个boolean值"  
  8.         android:title="Checkbox" />  
  9.   
  10.     <EditTextPreference  
  11.         android:defaultValue="defaultString"  
  12.         android:key="string_value"  
  13.         android:name="EditText"  
  14.         android:summary="保存一个字符串"  
  15.         android:title="Edit Text" />  
  16.   
  17. </PreferenceScreen>  
checkBoxPreference对应一个boolean值,EditTextPreference对应一个String。  android:key是标识符,必须是 唯一的。

然后建立一个SettingActivity.java,内容如下:

[java] view plaincopyprint?
  1. import android.com.ui.R;  
  2. import android.os.Bundle;  
  3. import android.preference.PreferenceActivity;  
  4.   
  5. public class SettingActivity extends PreferenceActivity{  
  6.     @Override  
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         addPreferencesFromResource(R.xml.setting);  
  10.     }  
  11. }  
代码addPreferencesFromResource(R.xml.setting);即给这个PreferenceActivity指定了一个xml,这样,当打开此界面时的效果图:


每次更改界面的设置之后,程序会自动持久化保存新的值。

而在程序的其他地方获取到设置的值也很简单,只需通过标识符,如获取上文中标识符为“boolean_value”和“string_value”的值, 只需

[java] view plaincopyprint?
  1. boolean booleanValue = PreferenceManager.getDefaultSharedPreferences(  
  2.         this).getBoolean("boolean_value"false);  
  3. String stringValue = PreferenceManager.getDefaultSharedPreferences(this)  
  4.         .getString("string_value""");  

即可获得。

PreferenceManager.getDefaultSharedPreferences(Context)是一个静态方法,获取到一个全局的Preference对象,在程序中的任何地方都是唯一的,getBoolean和getString方法的第二个参数是默认值,是在获取key失败时的默认返回值。


----------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言如何编写mysql客户端_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...

#include #include #include #include #include #include #include #include "mydb.h"void sqldb(const char *src)//参数src为要执行的SQL语句{if ((strncmp(src, "select", 6) 0) || (strncmp(src, "SELECT", 6) 0)|| (strncmp(src, "s…

调用支付jsapi缺少参数package_iOS微信支付(Swift)

前言微信支付的iOS的Demo不言而喻,所有的参数都是后台生成传过来的&#xff0c;完全没参考价值,并且有的注意点文档上也没说&#xff0c;现在我就说一下微信支付开发中需要注意的地方项目配置把实例项目中的一下文件拖到项目中Control文件夹下的WXApiManager.h和WXApiManager.m…

尚未注册 OLE DB 访问接口 SQLNCLI10 7043 错误

与链接服务器的测试连接失败。 执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo) ------------------------------程序位置: 在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTy…

asterisk 支持 VP8 video编码 实现安卓的视频通话

1 :checkout Asterisk source code revision 373330 svn checkout -r 373330 http://svn.digium.com/svn/asterisk/trunk asterisk (下载最新asterisk版本) 2 &#xff1a;asterisk 上面需要打一个补丁支持 VP8 video编码 wget http://sipml5.googlecode.com/svn/trunk/aste…

【Flink SQL API体验数据湖格式之paimon】

前言 随着大数据技术的普及&#xff0c;数据仓库的部署方式也在发生着改变&#xff0c;之前在部署数据仓库项目时&#xff0c;首先想到的是选择国外哪家公司的产品&#xff0c;比如&#xff1a;数据存储会从Oracle、SqlServer中或者Mysql中选择&#xff0c;ETL工具会从Informa…

ai里为什么不能随意放大缩小_AI常见问题解答

1、在AI中,有没有和CD一样的调整文字间距的快捷键呀? 答:Alt+左右方向键移动箭头。 2、在AI中,如何像快速放大缩小编辑区域? 答:按住Alt滚动鼠标滚轮。 3、在AI中,如何设置圆角矩形的圆角大小? 答:点击圆角矩形工具,用鼠标点击画布,这里可以填。 4、在AI中,如何简单…

python归一化 增大差异_Python逻辑回归模型原理及实际案例应用

前言上面我们介绍了线性回归, 岭回归, Lasso回归, 今天我们来看看另外一种模型—"逻辑回归". 虽然它有"回归"一词, 但解决的却是分类问题目录1. 逻辑回归2. 优缺点及优化问题3. 实际案例应用4. 总结正文在前面所介绍的线性回归, 岭回归和Lasso回归这三种回…

上周热点回顾(6.17-6.23)

热点随笔&#xff1a; 各地IT薪资待遇讨论&#xff08;潇洒一回&#xff09; 这些年过上幸福生活的程序员&#xff08;上篇&#xff09;&#xff08;飞扬青云&#xff09; 一个线上运营着3000人的游戏&#xff0c;因为我不小心一个DROP DATABASE&#xff0c;全没了。 怎么办…

Boost学习之指针容器--pointer_container

有时,我们可能需要一个包含指针的容器.比如存放一些不可拷贝的对象或者想在容器里存放基类以实现多态.尽管我们可以直接定义存放指针的STL容器,不过这样并不方便,我们得处处小心,在清空或删除容器里的元素时我们要保证异常安全地回收指针所指向的对象,以防内存泄漏. 一个好的办…

libzdb 连接到mysql_MySQL 连接

MySQL 连接使用mysql二进制方式连接您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。实例以下是从命令行中连接mysql服务器的简单实例&#xff1a;[roothost]# mysql -u root -pEnter password:******在登录成功后会出现 mysql> 命令提示窗口&#xff…

python ios 坐标点击_python点击鼠标获取坐标(Graphics)

使用Python进行图像编程&#xff0c;要使用到Graphics库。下面列举出较常用的代码from graphics import *#设置画布窗口名和尺寸win GraphWin(hehe, 666, 666)#关闭画布窗口win.getMouse()win.close()#画点pt Point(100, 100)pt.draw(win)#画圆cir Circle(Point(200, 200), …

C++ 11右值引用

C 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”&#xff08;move semantics&#xff09;的基础。而要理解右值引用&#xff0c;就必须先区分左值与右值。对左值和右值的一个最常见的误解是&#xff1a;等号左边的就是左值&#xff0c;等号右边的…

mysql dml ddl优先级_MYSQL入门操作和常规DML、DDL、DQL使用

刷新权限&#xff0c;将某些权限从硬盘刷新到内存中(修改root密码自带隐式刷新权限操作)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql>查看服务端口mysql> show variables like port;----------------------| Variable_name | Value |--------…

C语言中字符串如何转换为二进制、八进制、十进制、十六进制

在C语言某个程序当中需要把文本16进制转换成对应的16进制数&#xff0c;比如字符串"0x1a"转换成10进制的26&#xff0c;可以用以下函数来实现 相关函数: atof, atoi, atol, strtod, strtoul 表头文件: #include <stdlib.h> 定义函数: long int strtol(const…

python遍历循环中的遍历结构可以是什么_(一)Python入门-4控制语句:06for循环结构-遍历各种可迭代对象-range对象...

一&#xff1a;for循环和可迭代对象遍历for 循环通常用于可迭代对象的遍历。for 循环的语法格式如下&#xff1a;for 变量 in 可迭代对象&#xff1a;循环体语句可迭代对象&#xff1a;Python包含以下几种可迭代对象&#xff1a; 1. 序列。包含&#xff1a;字符串、列表、元组 …

C++11中的右值引用及move语义编程

C0x中加入了右值引用&#xff0c;和move函数。右值引用出现之前我们只能用const引用来关联临时对象&#xff08;右值&#xff09;&#xff08;造孽的VS可以用非const引用关联临时对象&#xff0c;请忽略VS&#xff09;&#xff0c;所以我们不能修临时对象的内容&#xff0c;右值…

IBatis 映射文件 sql 中大于、小于等符号转义

相信好多朋友在写配置文件的时候&#xff0c; 直接写 > 、<、>、< 编译不通过! 这些其实就是 xml 文体的特殊符号,在编写是需要转义&#xff0c;有两种方式处理&#xff0c;如下: 方法一 : 直接替换 <<>><><>&&amp;&apos…

python入侵数据库数据库_一个简单的Python访问Mysql数据库例子

2020/11/3操作记录搭建好Python的数据环境之后&#xff0c;接下来就是在Python代码中访问数据库我先在Navicat图形化界面创建一个数据库命名为pythontest&#xff0c;再在数据库中创建了一个表studentinfo有nid,nname,ngrade,nage四个字段&#xff0c;nid为主键递增。通过查询编…

r语言散点图_R语言 | 散点图入门:以声学元音图为例

R语言语言学与R语言的碰撞Xu & YangPhoneticSan学习参考Discovering Statistics Using RStatistics for Linguistics with RHow to Do Linguistics with RR in ActionAnalyzing Linguistic DataR Graphics Cookbook Recap可以使用plot( )函数进行基础的制图。调用ggplot2包…

oracle中如何创建dblink

当用户要跨本地数据库&#xff0c;访问另外一个数据库表中的数据时&#xff0c;本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。下面讲介绍如何在本地数据库中创建dblink. 创建dblink一般有两种方式&#x…