刷新对话框首选项而不关闭首选项活动



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

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

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

到目前为止做得很好。

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

我用一个标志入侵了它(如果调用onSetInitValues,我会在onBindDialogView中检查我设置的标志——如果没有设置,我会从SharedPreferences中获取值)。

这是一个丑陋的解决方案。有没有办法在首选项未关闭时"重新发送"对话框或调用onSetInitValues

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

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

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

每次打开对话框时,都会得到最新的偏好值,但上帝保佑,安卓系统并没有停止扭曲和不必要的复杂API,让我感到震惊。AFAICT的文件对此也没有提及。

相关内容

  • 没有找到相关文章

最新更新