我正在制定一个旅行计划项目。
我的应用程序结构如下:
片段标签主机包含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);