在Android片段教程中,它明确指出"一旦活动达到恢复状态,您就可以自由地为活动添加和删除片段。
从技术上讲,这意味着我们应该在onResume回调期间或之后添加和删除(或替换我认为教程引用的事务)片段?
我很难理解上述陈述......
最重要的是我下载了样本" FragmentBasics.zip"检查代码。我发现活动在onCreate 方法上添加片段,因此在活动达到恢复状态之前。
发生了什么?
答案 0 :(得分:0)
为避免活动状态丢失,需要确保在调用活动onSaveInstanceState
后不提交片段事务。 - 在onStop
-
您可以通过以下链接查看详细信息: http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html
从下面可以看出:
在onRestoreInstanceState
方法之后调用活动onStart
。我想(顺便说一下,我不确定你在说什么教程,我只是在大声思考)当说“在Android片段教程中它明确指出”一旦活动达到恢复状态,您可以在活动中自由添加和删除片段。“您可以确定活动的状态已恢复。因此您可以添加/删除片段,但在onResume中添加或删除片段可能会导致其他一些问题。
我的建议只是检查savedInstanceState
是否为null,而不是在活动的onCreate
方法中进行操作。通过这种方法,我们检查是否存在要恢复的先前状态。调用onStop
之后不要提交片段事务,这会导致IllegalStateException
(例如,长时间运行后台任务的结果,例如异步任务。)
在这里您可以看到这里的官方示例: https://developer.android.com/training/basics/fragments/fragment-ui.html
答案 1 :(得分:-1)
当你在片段onCreate阶段添加片段时,android正在创建你的活动,当它完成时它会将该状态保存在super.onCreate(savedInstanceState);因此,最初的片段不应该是活动的一部分,因为它们是可变的。因此,理想情况下,你应该在onCreate阶段之后添加片段。 您也可以在onCreate阶段添加片段,但有时它会导致无法保存状态或泄露的窗口问题,从而避免它