我如何知道它是否可以保存以访问Fragment的ChildFragmentManager?

时间:2015-11-05 11:44:32

标签: android android-fragments

当我试图在片段的子片段管理器中放入一些东西时,我偶然发现了可怕的Can not perform this action after onSaveInstanceState异常。

我怎么能正确地知道我不应该这样做?我通过FragmentManagerFragment代码阅读,看不到在片段上调用onSaveInstanceState()后翻转的任何标记。

当然,我可以做FragmentTransaction.commitAllowStateLoss()但这是一个肮脏的黑客并且有一个布尔标志,当我覆盖片段的onSaveInstanceState方法时我切换也是丑陋......

1 个答案:

答案 0 :(得分:1)

我用于提交FragmentTransaction的规则是:

  • onActivityCreated
  • 中执行此操作是安全的
  • isResumedtrue
  • 时,可以安全地执行此操作

您可以找到更深入的文章,了解发生的事情here.未获得例外的建议是:

  • 在Activity生命周期方法中提交事务时要小心。
  • 避免在异步回调方法中执行事务。
  • 仅作为最后手段使用commitAllowingStateLoss()