博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的Android笔记(十一)——使用Preference保存设置
阅读量:5259 次
发布时间:2019-06-14

本文共 1780 字,大约阅读时间需要 5 分钟。

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

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

 

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

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

[html] 
 
  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] 
 
  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] 
 
  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失败时的默认返回值。

转载于:https://www.cnblogs.com/kevincode/p/3824409.html

你可能感兴趣的文章
PHP截取中英文混合字符
查看>>
【洛谷P1816 忠诚】线段树
查看>>
电子眼抓拍大解密
查看>>
poj 1331 Multiply
查看>>
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
P1107 最大整数
查看>>
多进程与多线程的区别
查看>>
Ubuntu(虚拟机)下安装Qt5.5.1
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
java 常用命令
查看>>
CodeForces Round #545 Div.2
查看>>
卷积中的参数
查看>>
51nod1076 (边双连通)
查看>>
Item 9: Avoid Conversion Operators in Your APIs(Effective C#)
查看>>
深入浅出JavaScript(2)—ECMAScript
查看>>
STEP2——《数据分析:企业的贤内助》重点摘要笔记(六)——数据描述
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>
Jenkins关闭、重启,Jenkins服务的启动、停止方法。
查看>>
CF E2 - Array and Segments (Hard version) (线段树)
查看>>