【问题标题】:SharedPreferences.Editor not being updated after initial commitSharedPreferences.Editor 在初始提交后未更新
【发布时间】:2012-01-29 04:01:00
【问题描述】:

我在这里有点困惑。我正在尝试更改 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");

每次都会更新视图。

【问题讨论】:

    标签: android sharedpreferences preferenceactivity


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 2021-03-09
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多