我在我的主要活动中可以访问这样的共享偏好:
preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("maxValue", "666");
Boolean test = editor.commit();
当我打开我的首选项活动时,我看到该首选项的值为 666。所以这没有问题。
现在我想在我的 Preferences.java 中做几乎相同的事情,背景是我想检查输入字符串并在出现问题时通知用户,例如我想确保如果用户将 maxValue 设置为 1000 以上,告诉他这太高并自动将其设置为 899。我已经实现了一个更改监听器:
@Override
public boolean onPreferenceChange(Preference pref, Object newValue)
{
if(Integer.valueOf(etAdd.getEditText().getText().toString()) > 899)
{
SharedPreferences.Editor editor = preferences.edit();
editor.putString("maxValue", "899");
Boolean test = editor.commit(); //test shows true
Toast.makeText(Preferences.this, "value too high have set it to the maximum of 899", Toast.LENGTH_LONG).show(); //this toast is shown
}
return true;
}
当我重新打开此首选项时,即使在离开首选项活动并返回它之后,我也会看到用户输入的值,例如 1000。
任何人的想法?
谢谢。