android中SharedPreferences用法详解
16lz
2021-01-23
在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>
通过MyPreferenceActivity类的设置后就要可以在其他activity页面通过sharedPreference 来获取系统的参数。中途生成的xml配置文件位于data/data/org/tayue/shared_prefs目录下。可以pull出去查看。
好了,今天就讲解到这里,如果大家还有些地方不明白可以下载源代码来仔细研究下,
源代码地址是:http://download.csdn.net/detail/bearray123/3722067
转载请注明出处http://blog.csdn.net/bearray123
更多相关文章
- android之五大布局
- Android项目文件结构
- android: 横竖屏切换总结-布局改变和数据保存
- Android Studio中创建Selector文件的方法
- Android文件读写实例代码
- Android文件系统的提取方法(一)
- Android 布局管理器 之 RelativeLayout&FrameLayout&AbsoluteLay
- Android发送邮件附带文件