检查片段是否存在并重用它

时间:2014-08-29 11:34:36

标签: java android android-fragments fragment fragmentmanager

每次用户点击列表视图中的项目时,我都会使用以下代码创建一个片段。 但是以这种方式,片段是在每次用户点击时创建的。我想要的是重用旧片段(如果存在)并仅重新加载其内容(不要创建新片段)。

MagazineViewFragment fragment = new MagazineViewFragment();
fragment.openStream(itemSelected);

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
        .replace(R.id.container,  fragment)
        .commit();

我该怎么办?

3 个答案:

答案 0 :(得分:17)

有多种方式,可能最简单的方法是检查container中的当前片段是否是FragmentXYZ的一个实例(在您的情况下为MagazineViewFragment)。

实施例

Fragment mFragment = getFragmentManager().findFragmentById(R.id.container);
if (mFragment instanceof MagazineViewFragment)
    return;

答案 1 :(得分:0)

这样的事情可能有所帮助:

getFragmentManager().findFragmentById(fragmentId);

不要忘记空检查。

答案 2 :(得分:0)

从活动中调用片段时添加标记:

FragmentManager fm = getFragmentManager();
Fragment fragment = fm.findFragmentByTag( MagazineViewFragment.TAG);
if (fragment == null) {
MagazineViewFragment fragment = new MagazineViewFragment();
fragment.openStream(itemSelected);
getFragmentManager()
.beginTransaction()
.add(R.id.container, fragment, MagazineViewFragment.TAG)
.commit();
}

如果您只需要更新itemSelected - 请参阅广播或听众。<​​/ p>