在android应用开发中,作为配置环境的preferences,用到的地方颇多,下面我带大家来详细讲解下android中SharedPreferences的用法。先上图看下配置画面的效果吧。


上图是preferences页面的效果图。

点击设置IP地址后跳出设置对话框:




android 为了方便管理SharedPreferences,为我们提供了简单快捷的PreferenceActivity类,通过继承该类,可以实现各种漂亮的preferences UI设置界面。下面贴出preferences页面的java代码,类名是MyPreferenceActivity.java

package org.tayue;import android.content.SharedPreferences;import android.os.Bundle;import android.preference.CheckBoxPreference;import android.preference.EditTextPreference;import android.preference.ListPreference;import android.preference.Preference;import android.preference.Preference.OnPreferenceChangeListener;import android.preference.PreferenceActivity;/** * Preference用法举例 * @author xionglei * */public class MyPreferenceActivity extends PreferenceActivity implements OnPreferenceChangeListener{private EditTextPreference address;private EditTextPreference port;private EditTextPreference group;private ListPreference type;private CheckBoxPreference keepAlive;private CheckBoxPreference ack;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//加入preferences的布局文件,这里和普通的布局文件加入方式不一样,注意区别addPreferencesFromResource(R.layout.preference);//获得一个共享的preferences,通过该变量来读取配置文件中的各参数值SharedPreferences sp = getPreferenceManager().getSharedPreferences();address = (EditTextPreference) findPreference("prefer_address");address.setOnPreferenceChangeListener(this);port = (EditTextPreference) findPreference("prefer_port");port.setOnPreferenceChangeListener(this);group = (EditTextPreference) findPreference("prefer_ht_group");group.setOnPreferenceChangeListener(this);ack = (CheckBoxPreference) findPreference("prefer_sendACK");ack.setOnPreferenceChangeListener(this);type = (ListPreference) findPreference("prefer_request_type");type.setOnPreferenceChangeListener(this);keepAlive = (CheckBoxPreference) findPreference("prefer_keepAlive");keepAlive.setOnPreferenceChangeListener(this);//sp的getString方法有两个参数,该方法是获取配置参数的方法,参数一是首选参数,一般在生成都配置文件中,参数二是默认参数,在无法读取参数一的情况下就用参数二String typeStr = sp.getString("prefer_request_type", getResources().getString(R.string.type));type.setSummary(typeStr);type.setValue(typeStr);String addressStr = sp.getString("prefer_address", getResources().getString(R.string.ip));address.setSummary(addressStr);address.setText(addressStr);String portStr = sp.getString("prefer_port", getResources().getString(R.string.p));port.setSummary(portStr);port.setText(portStr);String groupStr = sp.getString("prefer_ht_group", getResources().getString(R.string.group));group.setSummary(groupStr);group.setText(groupStr);ack.setChecked(sp.getBoolean("prefer_sendACK", Boolean.getBoolean(getResources().getString(R.string.alive))));keepAlive.setChecked(sp.getBoolean("prefer_keepAlive", Boolean.getBoolean(getResources().getString(R.string.alive))));}@Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {if(preference == address){preference.setSummary(newValue.toString());}if(preference == port){preference.setSummary(newValue.toString());}if(preference == group){preference.setSummary(newValue.toString());}if(preference == type){type.setSummary(newValue.toString());}if(preference == ack){preference.setSummary(newValue.toString());}if(preference == keepAlive){preference.setSummary(newValue.toString());}return true;}}

preferences的布局文件如下

<?xml version="1.0" encoding="utf-8"?><PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android"            android:title="Settings"><PreferenceCategory        android:title="设置">        <EditTextPreference        android:key="prefer_address"            android:title="@string/setAddress"/>        <EditTextPreference        android:key="prefer_port"        android:numeric="integer"            android:title="@string/port"           />        <ListPreference            android:key="prefer_request_type"            android:title="@string/requsttype"            android:dialogTitle="@string/requsttype" />        <CheckBoxPreference         android:key="prefer_keepAlive"        android:title="@string/keep_alive"        android:summary="false"        />        <CheckBoxPreference        android:key="prefer_sendACK"        android:title="@string/send_ack"        android:summary="false"        />        <EditTextPreference    android:key="prefer_ht_group"    android:title="@string/ht_group"            android:dialogTitle="@string/ht_group"/>    </PreferenceCategory></PreferenceScreen>    


该布局文件的格式是android的规范。

通过MyPreferenceActivity类的设置后就要可以在其他activity页面通过sharedPreference 来获取系统的参数。中途生成的xml配置文件位于data/data/org/tayue/shared_prefs目录下。可以pull出去查看。


好了,今天就讲解到这里,如果大家还有些地方不明白可以下载源代码来仔细研究下,

源代码地址是:http://download.csdn.net/detail/bearray123/3722067

转载请注明出处http://blog.csdn.net/bearray123

更多相关文章

  1. Android(安卓)APK开发 Drawable文件夹下的自定义Drawable文件
  2. Android跨进程bindService与callback
  3. Android系统权限和root权限
  4. Android(安卓)解决65535的限制 使用android-support-multidex解
  5. 全面认识Android中Gradle相关配置文件
  6. mybatisplus的坑 insert标签insert into select无参数问题的解决
  7. NPM 和webpack 的基础使用
  8. Python技巧匿名函数、回调函数和高阶函数
  9. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程

随机推荐

  1. android studio之NDK配置
  2. android.os.FileUriExposedException 自
  3. Android(安卓)撸起袖子,自己封装 DialogFr
  4. 七 APPIUM Android(安卓)定位方式
  5. Android(安卓)studio运行Main方法
  6. 使用Android(安卓)Studio创建OpenCV 4.1.
  7. Android(安卓)listview指定垂直滑动距离
  8. Window窗口机制——WindowManager,ViewRoo
  9. 使用Android(安卓)Studio创建Android项目
  10. Android离线身份证等图片文字识别