我试图在屏幕旋转后恢复列表CheckBox
es的状态时遇到了一些非常意想不到的(令人难以置信的令人沮丧的)功能。我想我会首先尝试给出一个没有代码的文本解释,以防某人能够确定一个没有所有血腥细节的解决方案。如果任何人需要更多的细节,我可以发布代码。Android复选框 - 屏幕旋转后恢复状态
我有一个包含CheckBox
es的复杂View
s的滚动列表。在屏幕旋转后,我还没有成功恢复这些复选框的状态。我已实施onSaveInstanceState
并已成功将所选复选框的列表传送到onCreate
方法。这通过将数据库ID的long[]
传递给Bundle
来处理。
在onCreate()
我检查Bundle
为id数组。如果数组在那里,我使用它来确定在构建列表时要检查哪些复选框。我已经创建了许多测试方法,并且已经根据id数组确认复选框正确设置。作为最后一个检查,我正在检查onCreate(
最后的所有复选框的状态)。一切都很好......除非我旋转屏幕。
当我旋转屏幕时,会发生以下两种情况之一:1)如果选中任意数量的复选框,除最后一个外,所有复选框都在旋转后关闭。 2)如果最后一个复选框在旋转前被选中,则所有复选框都是,旋转后选中。
就像我说的,我检查我的onCreate()
最后的框状态。事情是,onCreate
结束时的方框的状态是正确的根据我在旋转之前选择的内容。但是,屏幕上方框的状态并未反映出这一点。
另外,我已经实现了每个复选框的setOnCheckChangedListener()
,我已经证实了我的复选框国家正在改变后我onCreate
方法返回。
任何人都知道发生了什么?为什么我的onCreate
方法返回后,我的复选框的状态会改变?
在此先感谢您的帮助。我一直试图消除这一点现在几天。当我发现我的复选框显然在我自己的代码之外的某个地方发生改变时,我想是时候到处打听了。
我相信onResume在onCreate之后被调用,当你做一个方向改变时。在onResume中发生了什么? –