根据文档,一个片段事务只能在活动保存其状态之前创建/提交。如果您尝试在Activity.onSaveInstanceState()之后(并在以下Activity.onStart或Activity.onResume()之前)提交事务,则会出现错误。我可以理解第一部分,即在Activity.onSaveInstanceState()之后无法提交片段事务,因为如果需要恢复活动,则提交后的状态可能会丢失。但是我不明白为什么我们不能在Activity.onStart或Activity.onResume()之前提交片段事务?Oncreate()也在Activity.onStart或Activity.onResume()之前,这是否意味着我们甚至不能在oncreate()中提交它?
onCreate()
中的状态还没有被恢复,因为 Activity 刚刚被创建。例如,你甚至还没有创建/设置内容视图,所以保存的视图还没有地方去。如果你愿意,可以在onCreate()
中恢复 你的 应用程序状态,但这并不意味着所有其他组件都已完成恢复其状态。 - Bryan HerbstonCreate()
被调用时,内容视图尚未设置。通常在onCreate()
期间充气内容视图。这是一个微妙但重要的区别,也是您不能假设状态在onCreate()
开始时恢复的原因。再次强调,不要过于纠结于Views,因为它们只是可能被恢复的状态的一部分。onRestoreInstanceState()
甚至直到onStart()
之后才被调用,因此那里正在恢复的任何状态(包括Activity的Window状态)都将在完成后才会恢复。 - Bryan Herbst