我有一个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
}