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