0

我试图在 a 中添加FragmentTabHost一个Fragment(这是另一个选项卡小部件的内容。

我使用了以下 xml:

<android.support.v4.app.FragmentTabHost
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="0"/>
        <FrameLayout
                android:id="@+id/realtabcontent"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"/>
        <TabWidget
                android:id="@android:id/tabs"
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0"/>

    </LinearLayout>
</android.support.v4.app.FragmentTabHost>

在我FragmentonCreateView()方法中:

View basicSearchView = inflater.inflate(R.layout.search_layout, container, false);
        try {
        mTabHost = (FragmentTabHost) basicSearchView.findViewById(android.R.id.tabhost);
        LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);
        mTabHost.setup(mLocalActivityManager);

        TabHost.TabSpec tab = mTabHost.newTabSpec("my tab content");

        tab.setContent(new Intent(getActivity(), JoinActivity.class));
        tab.setIndicator("Test", getResources().getDrawable(R.drawable.search_pheeds_selector));
        mTabHost.addTab(tab);
        }
        catch (Exception e) {
            Log.e("Udi",e.getMessage());
        }

        return basicSearchView;

起初我得到以下错误:

ERROR/Udi(25726): Must call setup() that takes a Context and FragmentManager

之后我将设置更改为:

mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);

我得到了这个错误:

ERROR/Udi(25996): Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?

有没有正确的方法将标签主机放在里面Fragment

4

1 回答 1

1

您尚未阅读FragmentTabHost该类的文档,该文档明确指出这FragmentTabHost是一个特殊的 TabHost,它允许将 Fragment 对象用于其选项卡内容。. 因此,您不能将选项卡设置为活动,并且当您尝试在片段中进行活动时,无论如何它都没有意义(应该是相反的方式)。

因此,修改您的代码以使用片段作为选项卡内容或使用正常TabHost的 anActivity以继续将这些活动用作选项卡(此选项已弃用,您真的应该使用第一个选项)。

有没有正确的方法将标签主机放在片段中?

在我链接的文档中,您有一个示例,如果我没记错的话,支持库的示例中有一些示例。

于 2013-03-11T13:41:44.727 回答