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;
}
}