5

这是我的用例:

我需要使用ActionBar Navigation Tabs创建 3 个选项卡,并且我正在使用ActionBarSherlock来完成此操作。3 个选项卡中的每一个都是它自己的Fragment。但是,每个选项卡中都显示了一些常见信息(在我的例子中是产品标题、描述)。我为这个公共信息创建了另一个 Fragment,并在每个主要的 Fragment 布局中引用这个 Fragment,就像这样

这是我的问题:

我想重用检索和显示公共信息的 Fragment 实例。我正在使用下面的代码,但它似乎总是在每个主要片段中创建公共片段的新实例。

    FragmentManager fm = getFragmentManager();
    f = (ProductDetailsInfoFragment) fm.findFragmentByTag("prodinfo");

    if (f == null) {
        Log.d(TAG, "fragment not found...creating new instance");

        f = new ProductDetailsInfoFragment();
        f.setTargetFragment(this, 0);
        fm.beginTransaction().replace(R.id.prod_info_fragment, f, "prodinfo").commit();         
    }
4

1 回答 1

2

如果您愿意,您可以共享片段。您将需要实现 ActionBar.TabListener 并在您的 onTabSelected 中选择您想要使用的片段。

你可以这样做:https ://gist.github.com/anonymous/5415274

更好的选择是将这两个片段所需的数据存储在可以在它们之间共享的单独对象中。如果您愿意,这将允许您在不附加 UI 的情况下测试检索。这也允许两个片段根据需要进行分歧,使它们成为单一用途的东西,而不必将两个操作所需的所有代码保留在单个片段中。

于 2013-04-18T18:56:57.793 回答