Android,片段状态在FragmentTransaction.add之后

El *_*uli 2 android android-fragments

我有两个片段,

fragmentA在前景中

现在我用FragmentTransaction.add(id, Fagment),(not .replace)显示fragmentB 所以fragmentA仍然存活,其上有fragmentB,

现在我使用back按钮,这里片段B被破坏,片段A可见,

在这一刻,我怎么会知道fragmentA又回到了"前台",即onResume,

请注意,onResume没有被调用,FragmentTransaction.add(id, Fagment)换句话说,onPause当显示fragmentB时,fragmentA不会被调用

非常感谢您的帮助

Lea*_* ES 7

如果您想知道片段A何时再次可见,您可以先将其隐藏在创建片段B的片段事务中:

fragmentTransaction.add(id, fragmentB).hide(fragmentA).addToBackStack(null);
Run Code Online (Sandbox Code Playgroud)

然后在Fragment A中,覆盖onHiddenChanged:

@Override
public void onHiddenChanged(boolean hidden) {
    super.onHiddenChanged(hidden);
    // Handle visibility changed. Note this method is called only when the state is changed.
}
Run Code Online (Sandbox Code Playgroud)

按下后退按钮时,片段事务将被反转,片段的状态将变为可见.有一点需要注意:我注意到隐藏状态不会在活动轮换之间保留,因此您必须在onSaveInstanceState中执行自己的簿记.我做了类似于你所问的事情,因为在我的例子中,片段视图的重建成本很高.

在执行此操作之前,您可能需要考虑以另一种方式处理片段,例如使用.replace()而不是.add().如果您的片段被新片段完全隐藏,那么您可能不需要保留它,并且一旦用户点击后退按钮,您就可以让片段管理器将其恢复.这样,您可以使用正常的生命周期函数,如onPause和onResume.