4

我有一个偏好活动,我可以在其中更改应用程序的语言和主题。从那里我通过返回键返回到上一个活动,我想重新创建活动。

我已经设法通过重新初始化布局onResumeonRestoreInstanceState从那里调用来做到这一点。所有视图都已正确恢复,如果需要检查复选框,edittexts 填充了我之前留在那里的文本。

但我也有一个最初被禁用的按钮,只有在选中单选按钮时才会启用。它的问题如下:我检查了单选按钮,按钮变为启用状态。然后我转到设置,在那里更改主题,然后返回第一个活动。当我到达那里时,单选按钮恢复为选中状态,但该按钮被禁用。

所以似乎启用/禁用状态没有保存到包中,这似乎违反直觉。而且我也没有在 Android 源代码中找到任何执行此操作的代码。我错过了什么,还是我必须为此编写自己的代码?

编辑:顺便说一句,仅为具有 id 的视图保存状态。而且那个按钮确实有一个,我保证:)

4

2 回答 2

0

如果选中单选按钮,最简单的方法是在 onResume 中启用您的按钮。

编辑PreferenceGroup可以处理视图之间的依赖关系,但它需要 Activity 是PreferenceActivity的子类。

于 2010-05-18T08:06:17.463 回答
0

他们在这里的关键是查看实际启用按钮的原因,并确保每次访问应用程序时都保持一致。

从你的陈述中:

但我也有一个最初被禁用的按钮,只有在选中单选按钮时才会启用。

看来您在启用该按钮的单选按钮上有一个侦听器。由此,我了解到该按钮最初是禁用的,这意味着您每次运行活动时都必须更改它。

您的选择如下:

  • 让单选按钮设置某种在 onResume 中检查的全局首选项,必要时启用按钮
  • 选中单选按钮后,将全局设置(或者可能是 GUI 设置)更改为启用该按钮的设置。这可以永远保留,直到再次取消选中单选按钮。
  • 正如您提到的,在 onSaveInstanceState 中保存启用

很难说哪个最合适,因为您没有提到用例的上下文,但我会避免在捆绑包中发送它,除非它是一个非常偶尔使用的活动。通过存储或更改视图来跟踪单选按钮设置非常有意义,直到另行通知。

于 2010-05-20T16:10:34.143 回答