FragmentManager知道片段何时恢复



我有一个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不适用于这里。是否有另一种方法,我应该用它来知道何时Fragment,那已经在FragmentManger,出现?

接受的答案不能工作:getFragmentManager可能在某些情况下返回null(即活动已被销毁)

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

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

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

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
}

最新更新