我搜索了当前显示的片段并找到了一些答案。我试过findFragmentById
。它返回null。我在片段的xml中使用FrameLayout
。不是<fragment>
。所以也许这就是为什么它返回null。我使用id
中<FrameLayout>
的{{1}}。
有人告诉我使用标签。但我无法弄清楚如何使用您设置的标签,同时替换片段以检查当前片段是否具有标签。
如果显示从导航栏中选择的特定片段,我需要通过清除堆栈中的所有活动来findFragmentById
退出应用程序。我只需要查看当前显示的片段是否是特定片段。
请问有人请举例说明。我已经做了好几天了,无法弄清楚。
编辑。我没有发布任何代码,因为我只想要一个例子。我发布了一个关于onBackPressed()
已经返回null的问题,有人建议我使用标记,我无法弄清楚使用标记检查它是否是当前片段。
答案 0 :(得分:3)
我希望这可以帮到你
在调用片段时,为每个片段设置一个唯一标记,如
Fragment fragment=new HomeFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment,"Home").commit();
//home is the tag
在MainActivity的onBackPressed方法中检查特定片段是否可见
Fragment hm=getFragmentManager().findFragmentByTag("Home");
if(hm!=null)
{
if(hm.isVisible())
{
//exit your application
MainActivity.this.finish();
}
}