gpt4 book ai didi

Android CheckBox -- 屏幕旋转后恢复状态

转载 作者:IT老高 更新时间:2023-10-28 21:57:44 27 4
gpt4 key购买 nike

在屏幕旋转后尝试恢复 CheckBoxes 列表的状态时,我遇到了一些非常意外(并且令人难以置信的令人沮丧)的功能。我想我首先会尝试在没有代码的情况下给出文本解释,以防有人能够在没有所有血腥细节的情况下确定解决方案。如果有人需要更多详细信息,我可以发布代码。

我有一个包含 CheckBoxes 的复杂 Views 的滚动列表。在屏幕旋转后,我未能成功恢复这些复选框的状态。我已经实现了 onSaveInstanceState 并成功地将选定复选框的列表传输到 onCreate 方法。这是通过将数据库 ID 的 long[] 传递给 Bundle 来处理的。

onCreate() 中,我检查 Bundle 中的 id 数组。如果数组在那里,我用它来确定在构建列表时要检查哪些复选框。我创建了许多测试方法,并根据 id 数组确认复选框设置正确。作为最后一项检查,我正在检查 onCreate() 末尾的所有复选框的状态。一切看起来都不错...除非我旋转屏幕。

当我旋转屏幕时,会发生以下两种情况之一:1) 如果选中了任意数量的复选框,除了最后一个,所有复选框在旋转后都会关闭。 2) 如果最后一个复选框在旋转前被选中,那么所有的复选框在旋转后都被选中

就像我说的,我在 onCreate() 的最后检查框的状态。问题是,基于我在旋转之前选择的内容,onCreate 末尾的框的状态是正确。但是,屏幕上框的状态并不能反射(reflect)这一点。

此外,我已经实现了每个复选框的 setOnCheckChangedListener() 并且我已经确认我的复选框的状态正在更改我的 onCreate 方法返回。

有人知道发生了什么吗?为什么我的 onCreate 方法返回后复选框的状态会发生变化?

提前感谢您的帮助。几天来,我一直在尝试对此进行调试。在我发现我的复选框显然在我自己的代码之外的某个地方发生了变化后,我认为是时候四处询问了。

最佳答案

我有类似的问题。应用在屏幕上有几个复选框。
旋转手机应用程序后,所有复选框都是“手动”设置值。
此代码在 onStart() 中执行。
但在屏幕上,所有复选框的值都设置为屏幕上的“最后一个复选框”。
Android 正在调用 onRestoreInstanceState(..) 并以某种方式将所有复选框视为“一个”[最后一个来自屏幕]。

解决方案是禁用“恢复实例状态”:

<RadioButton
...
android:saveEnabled="false" />

关于Android CheckBox -- 屏幕旋转后恢复状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2512010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com