zoukankan      html  css  js  c++  java
  • 我的Android笔记(十一)——使用Preference保存设置

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

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

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

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

    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,内容如下:

    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”的值, 只需

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

  • 相关阅读:
    I NEED A OFFER!
    水题 Codeforces Round #303 (Div. 2) A. Toy Cars
    模拟 HDOJ 5099 Comparison of Android versions
    模拟 HDOJ 5095 Linearization of the kernel functions in SVM
    贪心 HDOJ 5090 Game with Pearls
    Kruskal HDOJ 1863 畅通工程
    Kruskal HDOJ 1233 还是畅通工程
    并查集 HDOJ 1232 畅通工程
    DFS/并查集 Codeforces Round #286 (Div. 2) B
    水题 Codeforces Round #286 (Div. 2) A Mr. Kitayuta's Gift
  • 原文地址:https://www.cnblogs.com/kevincode/p/3824409.html
Copyright © 2011-2022 走看看