张新强的CSDN博客

我的编程之路 BarryZhang

我的Android笔记(十一)——使用Preference保存设置


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

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


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

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

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <CheckBoxPreference
        android:defaultValue="false"
        android:key="boolean_value"
        android:summary="保存一个boolean值"
        android:title="Checkbox" />

    <EditTextPreference
        android:defaultValue="defaultString"
        android:key="string_value"
        android:name="EditText"
        android:summary="保存一个字符串"
        android:title="Edit Text" />

</PreferenceScreen>
checkBoxPreference对应一个boolean值,EditTextPreference对应一个String。 android:key是标识符,必须是唯一的。

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

import android.com.ui.R;
import android.os.Bundle;
import android.preference.PreferenceActivity;

public class SettingActivity extends PreferenceActivity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.setting);
    }
}
代码addPreferencesFromResource(R.xml.setting);即给这个PreferenceActivity指定了一个xml,这样,当打开此界面时的效果图:


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

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

		boolean booleanValue = PreferenceManager.getDefaultSharedPreferences(
				this).getBoolean("boolean_value", false);
		String stringValue = PreferenceManager.getDefaultSharedPreferences(this)
				.getString("string_value", "");

即可获得。

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


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

我写的一个demo,下载地址:http://download.csdn.net/detail/barryhappy/4161548



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/barryhappy/article/details/7381544
个人分类: Android
所属专栏: 我的Android笔记
上一篇我的Android笔记(十)—— ProgressDialog的简单应用,等待提示
下一篇我的Android笔记(十二)——分享一个自己写的cnBeta客户端源码
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭