ben*_*nkc 13 android android-fragments
我有一个TabActivity主机5倍FragmentActivity.其中一些包含按钮或列表,在其中onClick()或onItemClick()创建和推送新片段.
在大多数情况下,这工作正常,但如果事情有点反应迟钝,或者测试人员做了一些愚蠢的事情(按住按钮或列表项,使用不同的手指切换标签,然后释放按钮/列表 - 100%可重复),我在活动暂停并保存后很快得到点击事件.请参阅日志片段:
10-30 17:05:16.258 3415 3415 D BKC DEBUG: More.onSaveInstanceState()
10-30 17:05:16.258 3415 3415 D BKC DEBUG: MoreFragment.onPause()
10-30 17:05:17.309 3415 3415 D BKC DEBUG: MoreFragment.onItemClick()
Run Code Online (Sandbox Code Playgroud)
在阅读了本文以及有关片段状态丢失的各种StackOverflow问题后,我没有看到如何解决这个问题的好答案.
commitAllowingStateLoss()(无条件)是一种可以隐藏真正错误的解决方法.OnClickListeners和OnItemClickListeners onSaveInstanceState会100%防止这种情况,对于每个片段中的每个按钮来说,它都是PITA.isAdded(),但我可以确认这不起作用.onSaveInstanceState()并onRestoreInstanceState()在onClick()中检查,但再次,这只是一个kludge.编辑:哦,片段没有onRestoreInstanceState(),但我可以旋转国旗onResume()或其他什么.是否有一个正确的解决方案,我错过了,或者我应该选择我的kludge?
由于 Activity 已暂停,并且确实没有对所选内容采取正确的操作,因此最好的操作可能是捕获并处理 IllegalStateException。让 UI 做它正在做的事情,让 FragmentTransaction 掉在地板上。