我正在使用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
何时出现?
答案 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
}