FragmentManager知道片段何时恢复

时间:2015-08-05 21:27:07

标签: java android android-fragments android-listfragment

我正在使用FragmentManagerFragments添加到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何时出现?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

您可以通过标记检查它是否可见,而不是通过起诉标记

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

答案 2 :(得分:0)

接受的答案无法正常工作:在某些情况下(例如,活动已被破坏),getFragmentManager可能返回null

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

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