我的应用程序中有一些功能需要Android版本4.2+。
因此,在我的主要活动中,我需要检查可用的操作系统功能并修改(启用/禁用)我的PreferenceActivity
中定义的首选项。
以下代码无法从PreferenceActivity
ListPreference prefReport = (ListPreference)getPreferenceScreen().findPreference("pref_report");
prefDspProfile.setValue("0");
所以我的问题是如何从PreferenceActivity外部修改首选项。
答案 0 :(得分:2)
如果您隐式使用PreferenceAcitivity,则使用的是SharedPreference文件。 因此,在PreferenceAcitivity之外,您可以访问SharedPrefence文件并进行更改。很快,这些更改将反映在您的PreferenceActivity上。
您需要一个Context才能访问SharedPreference。期待例如onCreate方法的其他simpleAcitivity。
更新: 使用此方法,您无法启用/禁用项目。您可以更改其值或将其删除
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
// Restore preferences
SharedPreferences settings = getPreferences(MODE);
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
//change your setting here
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
其他方式,我认为更好更容易提供替代资源。您可以根据Android API级别使用资源限定符提供许多定义应用程序设置的xml文件。例如:v2,v17。
res-v4
setting.xml
res-v17
setting.xml -> This file can include specific Jelly Beans configs