Android ViewPager中的片段未正确设置状态
我对包含多个片段的ViewPager有一个奇怪的问题。每个片段显示一个问题和多个可能的答案(复选框)。当复选框状态更改时,它的值存储在hashmap中,这样,如果用户使用ViewPager滑开然后再滑回,则可以恢复每个复选框的选中/未选中状态 在onCreateView()中: 我将省略布局文件,因为它们很琐碎。当在片段之间分页和点击复选框时,应用程序一开始运行良好。数据模型已正确更新 当我这样做时,问题出现了:Android ViewPager中的片段未正确设置状态,android,checkbox,android-viewpager,fragment,state,Android,Checkbox,Android Viewpager,Fragment,State,我对包含多个片段的ViewPager有一个奇怪的问题。每个片段显示一个问题和多个可能的答案(复选框)。当复选框状态更改时,它的值存储在hashmap中,这样,如果用户使用ViewPager滑开然后再滑回,则可以恢复每个复选框的选中/未选中状态 在onCreateView()中: 我将省略布局文件,因为它们很琐碎。当在片段之间分页和点击复选框时,应用程序一开始运行良好。数据模型已正确更新 当我这样做时,问题出现了: 选中复选框,使其变为“选中” 移开两页(这样原始片段就会被销毁) 移回原始片段位置
感谢您的帮助。a。尝试调用
setSaveEnabled(false)代码>打开复选框
b。尝试添加:
answerCheckButton.setOnCheckedChangeListener(null);
以前
answerCheckButton.setChecked(isChecked);
然后添加新的侦听器。您确定在步骤1之后对您的模型所做的更改会被持久化吗?我对交换机也有同样的问题。setSaveEnabled()确实解决了这个问题。我已经尝试在检查状态(您的(b)选项)之后添加侦听器,但没有成功。setSaveEnabled选项很有趣,我将尝试一下。我曾假设,除非您显式地实现代码,否则不会保存任何状态。实际上,自从我发布之后,我找到了一个解决方法:将侦听器和setChecked代码放在onStart中,而不是放在onCreateView中。这有效地覆盖了Android在生命周期后期设置状态时尝试的任何状态更改。我尝试了setSaveEnabled(false)-效果非常好。谢谢你的帮助!我遇到了完全相同的问题,这让我发疯,因为我不知道发生了什么!上帝为你们互联网上的人们。非常感谢(千次),我把代码setSaveEnables(false)工作得很好。我感到困惑和恼火,为什么它没有被正确检查。感谢你们的帮助我不敢相信这只有4张(现在我有5张)投票!这救了我的命,谢谢!
07-02 14:42:10.474: I/System.out(21487): onCheckedChanged Q4A1 false
answerCheckButton.setOnCheckedChangeListener(null);
answerCheckButton.setChecked(isChecked);