-
java.lang.IllegalStateException:以后的onSaveInstanceState可以 不执行此操作
解决方案:
使用transaction.commitAllowingStateLoss();
添加或执行 的FragmentTransaction
时这是造成的例外。
Why was the exception thrown?
异常被抛出,因为你尝试的活动的状态已经被保存后犯下FragmentTransaction,导致被称为活动状态丢失的现象。
当你调用onSaveInstanceState()
后FragmentTransaction#commit()
被调用时,交易将不被记住,因为它从来没有记录在首位的活动的状态的一部分。从用户的角度来看,交易似乎会丢失,导致意外的UI状态丢失。为了保护用户体验,Android可以不惜一切代价避免状态丢失,并且只要发生它就会抛出一个IllegalStateException
。
注:
使用commitAllowingStateLoss()
只能作为最后的手段。拨打commit()
和commitAllowingStateLoss()
的唯一区别在于,如果状态丢失发生,后者不会抛出异常。通常你不想使用这种方法,因为它意味着有可能发生状态损失。当然,更好的解决方案是编写应用程序,以确保在保存活动状态之前调用commit(),因为这会带来更好的用户体验。除非无法避免状态丢失的可能性,否则不应使用commitAllowingStateLoss()
。
更多来自:fragment-transaction-commit-state-loss。
-
FragmentManager(11885):未找到ID 0x7f05003c的片段视图
解决方案:
片段经理能不能够找到一个视图, R.id.Container
根据您在setContentView
的布局中设置的活动。
所以,无论你的布局在setContentView
已设置,该布局不包含与ID解析为ID 0x7f05003c
说的R.id.Container
这一观点。
有几个原因可以避免这种情况,这里描述http://stackoverflow.com/questions/17184653/commitallowingstateloss-in-fragment-activities –