android中SharedPreferences用法详解

在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; @Override protected 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)))); } @Override public 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的布局文件如下


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

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


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

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

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

你可能感兴趣的:(android中SharedPreferences用法详解)