片段的onDestroyView未按后退按钮

时间:2015-07-22 11:21:18

标签: android android-fragments

我的应用程序中有三个片段:片段A,B和C.

步骤:

  1. 我正在用B替换A并将A保持在后台。
  2. 我用C替换B而不是将B保留在后台。
  3. 我按下后退按钮,按下按钮A onCreateView然后调用onStart(因为它是 在背堆上)
  4. 问题是Fragment C的onStop,onDestroyView等没有被调用,因此片段A在屏幕上不可见,片段C是可见的(因为它; s视图没有被破坏)。

2 个答案:

答案 0 :(得分:3)

我相信对后筹码存在一些误解。 将A替换为B时,将事务A-> B 放在后堆栈中,而不是A片段。后端堆栈知道当用户按下后退按钮时,它将必须回滚事务:销毁B并重新创建A.在您的情况下,您将用B替换C并且您按下后退按钮:将重新创建A并且B不能被破坏,因为它不存在。 也许你可以找到一个使用FragmentManager.addOnBackStackChangedListener()监听后台事件的解决方案,但我不知道它是否符合你的要求。

答案 1 :(得分:1)

请浏览开发博客 http://developer.android.com/guide/components/fragments.html

片段生命周期受活动生命周期的影响。