use*_*494 5 android android-fragments fragmenttransaction
根据文件
片段事务只能在活动保存其状态之前创建/提交.如果您尝试在Activity.onSaveInstanceState()之后(以及之后的Activity.onStart或Activity.onResume()之前提交事务,则会出现错误.
我可以理解片段事务在Activity.onSaveInstanceState()之后无法提交的第一部分,因为如果需要恢复活动,则提交后的状态可能会丢失.
但我不明白为什么我们不能在Activity.onStart或Activity.onResume()之前提交片段事务?Oncreate()也在Activity.onStart或Activity.onResume()之前.这是否意味着我们甚至无法在oncreate()中提交它?
这里的关键是你不能在调用之后onSaveInstanceState() 和之前 提交事务onStart()或onResume()。
您可以在初始onCreate()和后续提交事务,onStart()或者onResume()因为没有状态。
但是,如果 Activity 正在恢复其状态(即onSaveInstanceState()之前被调用,并且 Activity 正在使用该状态重新创建自己,则您无法执行 Fragment 事务。这是因为如果您在 Activity 恢复先前的 Fragment 状态之前提交 Fragment 事务,你最终会处于不清楚你处于什么状态的情况。保存的状态优先于你通过提交 Fragment 事务创建的新状态,还是新事务应该优先于保存的状态?
检查这种情况的最简单方法是检查savedInstanceState传递给的包onCreate()和其他生命周期方法是否为空。如果它为空,则没有保存的状态,您可以安全地执行您的交易。如果它不为空,则存在您可能想要保留的已保存状态。
| 归档时间: |
|
| 查看次数: |
1787 次 |
| 最近记录: |