刷新DialogPreference而不关闭PreferenceActivity

问题描述 投票:3回答:1

我有一个PrefrenceActivity,其中包括DialogPreference和我的自定义布局(edittext和复选框)。

当第一次调用我的DialogPreference时,调用它的onSetInitValue,我从SharedPreferences获取值,然后在onBindDialogView中我更新了我的edittext和复选框。

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

到目前为止工作很棒。

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

我使用一个标志来攻击它(如果onSetInitValues被调用我设置了标志,我在onBindDialogView中检查 - 如果没有设置我从SharedPreferences获取值)。

这是丑陋的解决方案。有没有办法“重新渲染”对话框或在首选项未关闭时调用onSetInitValues

android preferences dialog-preference
1个回答
0
投票

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

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

在onCreateDialogView方法中调用上面的内容,并分别用所需的类型和默认常量替换getInt和DEFAULT_VALUE。

这应该在每次打开对话框时获得最新的偏好值,但可能上帝是我的见证Android并不会因为它的扭曲和不必要的复杂API而让我感到震惊。文献对此以及AFAICT保持沉默。

© www.soinside.com 2019 - 2024. All rights reserved.