刷新DialogPreference而不关闭PreferenceActivity

时间:2013-12-12 13:59:32

标签: android preferences dialog-preference

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

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

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

到目前为止工作很棒。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

每次打开对话框时,它应该获取最新的首选项值,但愿上帝成为我的见证人。Android不会因为其扭曲且不必要的复杂API而震惊我。关于这一点以及AFAICT的文档也没有提及。