为什么有意图的片段标签主机转到其他片段?

时间:2014-06-19 06:06:26

标签: android android-intent android-fragments

我正在制定一个旅行计划项目。

我的应用程序结构如下:

片段标签主机包含4个标签。在第二个选项卡上,默认情况下它是JoinFragment,它检查用户是否加入了计划。如果是,它将转到名为calenderFragment的片段。如果不是,则用户将保留在此片段中,即可用的计划列表视图,如果用户选择了计划,则他加入并转到calenderFragment

所以,我的实现首先是joinFragment,然后是用户加入计划,然后替换当前片段

    Fragment newFragment = new CalendarFragment();
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(R.id.realtabcontent, newFragment);
    transaction.commit();

问题是,当我从第二个标签切换到其他标签时,其他标签内容在第二个标签上重叠,而不是第二个标签中的每个标签都应该被清除。

在我之前的项目中,我使用intent并转到其他活动而不是片段。那么,任何体验程序员都会指导我如何解决这个问题?感谢

更新

这是主要结构:

<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <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:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:orientation="horizontal" />
    </LinearLayout>

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

更新2(Tabhost类):

tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

tabHost.addTab(tabHost.newTabSpec("profile").setIndicator("Profile"),ProfileFragment.class, null);
tabHost.addTab(tabHost.newTabSpec("calender").setIndicator("calender"), JoinFragment.class,null);
tabHost.addTab(tabHost.newTabSpec("social").setIndicator("Social"), SocialFragment.class,null);
tabHost.addTab(tabHost.newTabSpec("news").setIndicator("News"), NewsFragment.class,null);
tabHost.addTab(tabHost.newTabSpec("setting").setIndicator("Setting"), SettingFragment.class,null);

0 个答案:

没有答案