初始提交后SharedPreferences.Editor未更新

时间:2012-01-29 04:01:01

标签: android sharedpreferences preferenceactivity

我在这里有点困惑。我正在尝试更改EditTextPreference的值,但它未在视图中更新。 (这是在PreferenceActivity中)

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  addPreferencesFromResource(R.xml.modify_instrument_preferences);

  // Set default values
  SharedPreferences customSharedPreference = PreferenceManager.getDefaultSharedPreferences(this);
  SharedPreferences.Editor editor = customSharedPreference.edit();
  modifying = getObjectWithName(); //Some object with a name;

  editor.putString("namePref", modifying.getName());
  editor.commit();
  android.util.Log.d("TEST", "written: "+customSharedPreference.getString("namePref",""));
}

我的printlns打印出有效信息,commit()返回true,但是在单击EditTextPreference时,它会显示旧值。如果我旋转屏幕,导致onCreate再次运行,则EditTextPreference具有正确的值。

如此令人困惑。为什么不在UI中更新此更改?

编辑:

我不确定为什么以上不起作用,但我只是通过这样做来设法改变它:

  EditTextPreference namePref = (EditTextPreference) findPreference("namePref");
  namePref.setText("the text");

每次更新视图。

1 个答案:

答案 0 :(得分:0)

虽然我知道PreferenceActivities有一些构造可以自己跟踪这些信息,但似乎没有很好的记录。我发现在首选项中添加onPreferenceChangeListener可让您在更改首选项后立即进行编辑。