【问题标题】:Refresh DialogPreference without closing PreferenceActivity在不关闭 PreferenceActivity 的情况下刷新 DialogPreference
【发布时间】:2013-12-12 13:59:31
【问题描述】:

我有一个PrefrenceActivity,其中包括带有我的自定义布局(编辑文本和复选框)的DialogPreference

当我的 DialogPrefernce 第一次被调用时,它的 onSetInitValue 被调用,我从 SharedPreferences 中获取值,然后在 onBindDialogView 中更新我的编辑文本和复选框。

然后我更改edittext值,(肯定)关闭对话框并将值保存到onDialogClosed中的SharedPreferences。

到目前为止做得很好。

不幸的是,当我再次打开对话框时,onSetInitValue 没有被调用并且值保持不变。我发现只有在关闭 PrefrenceActivity 并重新打开它之后才会调用 onSetInitValues。

我使用一个标志破解了它(如果调用了 onSetInitValues,我设置了我检查 onBindDialogView 的标志 - 如果没有设置,我从 SharedPreferences 获取值)。

这是一个丑陋的解决方案。当 Preferences 没有关闭时,有没有办法“重新呈现”对话框或调用 onSetInitValues

【问题讨论】:

    标签: android preferences dialog-preference


    【解决方案1】:

    遇到了完全相同的问题,不幸的是只找到了一个或多或少干净的解决方法:

    initialValue = getPreferenceManager().getSharedPreferences().getInt(getKey(), DEFAULT_VALUE);
    

    在您的 onCreateDialogView 方法中调用上述内容,并分别将 getInt 和 DEFAULT_VALUE 替换为您想要的类型和默认常量。

    这应该会在您每次打开对话框时获得最新的偏好值,但愿上帝成为我的见证,Android 并没有停止让我震惊,因为它的扭曲和不必要的复杂 API。文档在这方面也没有提及 AFAICT。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-01
      • 2013-10-04
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多