FragmentManager 知道片段何时恢复

FragmentManager know when a fragment resumed

我有一个 FragmentManager,我用它来将 Fragments 添加到 backStack

FragmentTransaction ft = getFragmentManager().beginTransaction();
PUCCoursesSubjectList detail = new PUCCoursesSubjectList();
detail.item = item;

ft.add(R.id.container_frame, detail, "courses_detail");
ft.addToBackStack(null);
ft.commit();

一旦堆栈上有几个 Fragments,我就会弹出一个,但我需要知道上一个片段何时再次显示。

看来onResume在这里不适用。我应该使用另一种方法来了解 FragmentManger 中已经存在的 Fragment 何时出现吗?

当你弹出你的片段时,你可以通过你提供的标签从片段管理器中获取你的另一个片段,并在你的片段中调用一个public方法。

YourFragment fragment = (YourFragment) getFragmentManager().findFragmentByTag("FRAGMENT_TAG");

if (fragment != null) {
   fragment.callMethod();
}

您可以通过起诉标签来检查标签是否可见且不为空

MyFragment myFragment = (MyFragment)getFragmentManager().findFragmentByTag("MY_FRAGMENT");
if (myFragment != null && myFragment.isVisible()) {
   // add your code here
}

已接受的答案无法工作:在某些情况下,getFragmentManager 可能 return 为 null(即 Activity 已被销毁)

现在最好使用 Lifecycle,如下例所示:

  if( getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED) )
  {
      // Do whatever you need
  }