【问题标题】:SharedPreferences dependenciesSharedPreferences 依赖项
【发布时间】:2014-02-06 18:59:38
【问题描述】:

我想创建 ListPreference,它在更改时也会重新加载其他 ListPreference 对象的值。我试图通过调用来做到这一点:

if(key.equals("important_pref")) {
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putString("some_pref", "some_val");
  editor.apply();
}

在 onSharedPreferenceChanged 函数中。

它可以工作,但我需要重新加载首选项屏幕才能看到效果。有没有办法避免这种情况并立即重新加载值?

我的猜测是我不能那样做,因为第一次提交需要在更改其他内容之前结束。

【问题讨论】:

    标签: android dependencies sharedpreferences listpreference


    【解决方案1】:

    恐怕这是一个非常普遍的要求,但没有得到满足。您要么必须通过setPreferencesScreen(null); 之类的技巧重新加载屏幕,要么(更好)注册一个 SharedPreferencesChanged 侦听器并手动更新首选项。见:update preferences values after changing them programatically

    在您的情况下,您应该在现有的 SharedPreferencesChanged 侦听器中添加 if 子句以“听到”"some_pref" 首选项的更改并手动更新显示的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 2014-08-20
      • 2016-02-18
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多