PreferenceActivity综述:
设置界面是很多软件用来配置用户偏好的图形化界面与之对应的是SharePreference。以下代码可以调用系统的PreferenceActivity,设置界面还可以通过自己做的布局来设置SharePreference或者通过自定义Preference来实现。
因为PreferenceActivity是Activity的子类,所以PreferenceActivity必须在AndroidManifest.xml文件注册。
public class Preferencetest extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setPreferenceScreen(createPreferenceHierarchy());
}
private PreferenceScreen createPreferenceHierarchy() {
//用来创建Preference
PreferenceManager preferenceManager = getPreferenceManager();
preferenceManager
.setSharedPreferencesName(Constants.SHARED_PREFERENCE_NAME);
//设置SharedPreferences的存储模式
preferenceManager.setSharedPreferencesMode(Context.MODE_PRIVATE);
//Preference的根节点
PreferenceScreen root = preferenceManager.createPreferenceScreen(this);
/*
* 设置复选框
*/
CheckBoxPreference soundPref = new CheckBoxPreference(this);
/*设置 SharedPreferences的key*/
soundPref.setKey(Constants.SETTINGS_SOUND_ENABLED);
soundPref.setTitle("声音");
/*每一条设置的概要*/
soundPref.setSummary("播放音乐");
soundPref.setSummaryOn("打开软件声音");
soundPref.setSummaryOff("关闭软件声音");
soundPref.setDefaultValue(Boolean.TRUE);
soundPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference,
Object newValue) {
boolean checked = Boolean.valueOf(newValue.toString());
if (checked) {
preference.setTitle("开启声音");
} else {
preference.setTitle("关闭声音");
}
return true;
}
});
/*设置铃声 */
RingtonePreference ringtonePreference = new RingtonePreference(this);
ringtonePreference.setTitle("设置铃音");
//设置默认录入项
EditTextPreference editTextPreference = new EditTextPreference(this);
editTextPreference.setTitle("XXX标题");
editTextPreference.setText("XXXX");
editTextPreference.setSummary("描述");
editTextPreference.setOrder(0);//设置在列表中显示的位置
editTextPreference.setKey(Constants.SETTINGS_TEXT);
//设置列表
ListPreference listPreference = new ListPreference(this);
root.addPreference(soundPref);
root.addPreference(ringtonePreference);
root.addPreference(editTextPreference);
// root.addPreference(listPreference);
// prefCat.addPreference(notifyPref);
// prefCat.addPreference(soundPref);
// prefCat.addPreference(vibratePref);
// root.addPreference(prefCat);
return root;
}
}