未在 Fragment 上调用 onSaveInstanceState

0xS*_*ina 11 android

我正在用另一个片段替换一个片段:

    FragmentTransaction transaction = mFragmentManager.beginTransaction();

    transaction.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit);
    transaction.replace(R.id.main_container, nextFragment, nextFragment.getClass().toString());
    transaction.addToBackStack(nextFragment.getClass().toString());
    transaction.commit();
Run Code Online (Sandbox Code Playgroud)

然而,被替换的片段,它的 onSaveInstanceState 没有被调用。我究竟做错了什么?

kgm*_*ize 8

“在 Fragment 中,它们的所有生命周期回调都直接与其父 Activity 相关联。因此,当 Fragment 的父 Activity 调用 onSaveInstanceState 时,就会在 Fragment 上调用 onSaveInstanceState。”

看看这个帖子:

FragmentActivity onSaveInstanceState 未被调用

  • 您应该能够在您的特定 Fragment 类中拥有一个变量,用于存储当用户按下返回并返回到前一个片段时您需要保留的所有数据。Fragment 实例在进入下一步时实际上并没有被销毁,尽管它的视图会被销毁。 (4认同)
  • 在我的活动中,我展示了一个逐步的表格。每一步都在一个片段中。当用户按下下一步时,我通过上面的代码(在我的问题中)显示下一个片段。然而,当用户按下返回时,上一步(片段)出现,但它是一个新实例。这就是我尝试保存状态的原因,以便我可以在用户继续下一步之前向用户显示他输入的内容。 (3认同)
  • 那么在这种情况下我有什么选择呢? (2认同)