我使用了一些CheckBoxPreferences,但它们并不是独立的。这意味着,我改变一个CheckBoxPreference,其他的是固定的。我使用以下代码:
public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
Context context = getApplicationContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPrefs, String key) {
SharedPreferences.Editor editor = sharedPrefs.edit();
if ((key.equals("A")) & (key.equals("B"))) {
editor.putBoolean("C", true);
editor.commit();
}
}
}
在此之后,CheckBoxPreference“C”有一个新值,但我看不到它。如何使用新值更新屏幕?
答案 0 :(得分:0)
通过使用PreferenceActivity的子类,您不必处理首选项UI的更新。您可以在addPreferencesFromResource()加载的资源文件中定义首选项,并相应地呈现Activity。更改将自动保留,并应立即显示。您不必将您的首选项活动注册为SharedPreferences.OnSharedPreferenceChangeListener。
当调用onSharedPreferenceChanged()时,新值已保存到首选项。
此通知适用于除PreferenceActivity的子类之外的其他活动。要知道如何访问保存的首选项,您需要查看res / xml / settings.xml中的文件,它应该包含android:key属性。属性值为您提供首选项的键。
您可以通过以下方式检索值:
PreferenceManager.getDefaultSharedPreferences(aContext).getString(key, "");