2010-05-18 77 views
3

我有一个偏好活动,我可以改变我的应用程序的语言和主题。从那里我通过后退键返回到上一个活动,并且我想重新创建活动。应该onSaveInstanceState保存视图的“启用”?

我已经设法通过重新初始化onResume中的布局,并从那里调用onRestoreInstanceState。所有视图都可以正确恢复,如果需要,可以选中复选框,编辑文本充满我之前留下的文本。

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

所以看起来启用/禁用状态没有被保存到捆绑包中,这似乎违反了直觉。而且我还没有在Android源代码中找到任何代码。我是否错过了某些东西,还是必须为此编写自己的代码?

编辑:顺便说一句,状态只保存为有ID的意见。并且该按钮确实有一个,我保证:)

回答

0

它们的关键在于查看实际启用按钮的内容,并确保对应用程序的每次访问都保持一致。

从你的陈述:

但我也有一个按钮,它最初是禁用的,只有当一个单选按钮被选中成为启用。

看起来你在启用按钮的单选按钮上有一个监听器。从这里我可以了解到,该按钮最初是禁用的,这意味着每次运行该活动时都必须更改该按钮。

您的选项如下:

  • 有单选按钮设置某种全球性的偏好这是在的onResume检查,使按钮,如果必要
  • 当单选按钮被选中,改变全局设置(或者可能是GUI设置)设置为启用按钮的位置。这可以永远留下,直到单选按钮再次被取消选中。
  • 保存的onSaveInstanceState中的enabledness你提到

这是很难分辨出哪是最合适的,因为你没有提到的用例的情况下,但我会避免通过捆绑除非它发送这是一个非常偶然使用的活动。通过存储或更改视图来跟踪单选按钮设置是非常有意义的,直到进一步通知。

0

最简单的方法是在检查单选按钮时启用onResume中的按钮。

编辑PreferenceGroup可以处理意见之间的依赖关系,但它需要的活动是的PreferenceActivity一个子类。

+0

当然可以,但我有很多类似行为的活动,并且我想要一个杀人em'-all解决方案..让我们看看是否有任何想法出现。 – 2010-05-18 08:14:48

相关问题