检查片段TabHost活动中是否存在片段

时间:2014-10-10 10:00:12

标签: android android-fragments

我有一个Activity A,它实现了带有2个Tabs的Fragment Tab Host。第一个选项卡是列表视图,第二个选项卡在可扩展列表视图中具有相同的数据。以下是我的Fragment活动的代码片段:

mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(),
    R.layout.activity_list);

mTabHost.addTab(
      mTabHost.newTabSpec("Tab1").setIndicator("List"),
      ListFragment.class, null);
mTabHost.addTab(
      mTabHost.newTabSpec("Tab2").setIndicator("ExList"),
      ExpandableListFragment.class, arg2);

现在的问题是,如果我再次调用该活动,它会再次创建片段。我需要检查片段是否已经存在,不需要添加新片段。我试过以下的东西,但那不起作用

 Fragment f = getSupportFragmentManager().findFragmentByTag("List");
        if (f!=null && f instanceof ListFragment){
            Log.i("ListActivity","Already Created");
        }

对于上面的代码,当再次调用activity时,我对Fragment f变为null。阅读一些类似的帖子,但似乎没有任何工作。请告知我如何在调用ListActivity时确保不再创建Fragments。感谢。

1 个答案:

答案 0 :(得分:0)

我认为在你的tabactivity中保持片段的实例是活着的并不重要。如果您的活动没有被破坏,那么您的片段也不会被破坏。但是如果您的活动被破坏,并且片段也被破坏,那么重建它们并不是一个大问题,因为旧实例很快就会被垃圾收集器清理掉。我不明白你为什么要控制这种行为。只需在活动的onCreate()中初始化标签栏,在onDestroy()中将其销毁,然后让android生命周期完成它的工作。