Android:带标签的片段

时间:2015-09-03 04:57:04

标签: java android android-fragments android-tabhost fragment-tab-host

如何在我的片段中放置标签?我一直在努力解决这个问题,非常感谢你的帮助。

目前我收到此错误:Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?

然而,即使我添加一个调用,我仍然会遇到一个致命的崩溃错误: Must call setup() that takes a Context and FragmentManager

这似乎是矛盾的......

以下是相关的Java和XML:

  @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    super.onCreateView(inflater, container, savedInstanceState);

    View v = inflater.inflate(R.layout.fragment_profile, container, false);

    mTabHost = new FragmentTabHost(getActivity());
    mTabHost.setup(getActivity().getApplicationContext(), getChildFragmentManager(), R.layout.testtabhost1);

    //LocalActivityManager mLocalActivityManager = new LocalActivityManager(getActivity(), false);
    //mLocalActivityManager.dispatchCreate(savedInstanceState); 
    //mTabHost.setup(mLocalActivityManager);

    //LocalActivityManager mLocalActivityManager = new LocalActivityManager(getActivity(), false);
    //mTabHost.setup(mLocalActivityManager);

    Intent q_intent = new Intent (getActivity(), QuestionTabActivity.class);
    Intent a_intent = new Intent (getActivity(), AnswerTabActivity.class);

    View questionIndicator = createTabView(mTabHost.getContext(), "Questions");
    View answerIndicator = createTabView(mTabHost.getContext(), "Answers");

    mTabHost.addTab(mTabHost.newTabSpec("questions").setIndicator(questionIndicator).setContent(q_intent));
    mTabHost.addTab(mTabHost.newTabSpec("answers").setIndicator(answerIndicator).setContent(a_intent));

    mTabHost.setCurrentTab(0);

    // Inflate the layout for this fragment
    return v;
}

和XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.juryroom.qollege_android_v1.ProfileFragment">

    .........
    ...ETC...
    .........

    <android.support.v4.app.FragmentTabHost
        android:id="@+id/testtabhost1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/edit_profile_picture_fragment_circView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="5dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:showDividers="none"></TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent">


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

.........
...ETC...
.........

</FrameLayout>

以下是我制作的设计外观: My Design

2 个答案:

答案 0 :(得分:0)

mTabHost = (FragmentTabHost) v.findViewById(android.R.id.tabhost);
    mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
    mTabHost.addTab(mTabHost.newTabSpec(Constant.BuildingPicture.FRONT_PHOTOS).setIndicator(Constant.BuildingPicture.FRONT_PHOTOS),SiteDataFrontPhotoTab.class, null);
    mTabHost.addTab(mTabHost.newTabSpec(Constant.BuildingPicture.SATELLITE_PHOTOS).setIndicator(Constant.BuildingPicture.SATELLITE_PHOTOS),SiteDataSatellitePhotoTab.class, null);

答案 1 :(得分:0)

为了显示标签,我们不必使用任何其他UI元素,如TabHost。操作栏具有添加选项卡的内置功能。我们所要做的就是使用setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)启用它。

Here很好地描述了您的目标。