在“主页”选项卡中,有一个可以单击的菜单列表视图。如果你点击一个,它将转到一个新的活动,但标签已经消失。我希望标签出现在这个新活动和其他活动中。
这是我的主要活动(onCreate)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hostTab = (TabHost) findViewById(R.id.tabhost);
hostTab.setup(this.getLocalActivityManager());
//setting tabs(images)
mIntent = new Intent(this, HomeActivity.class);
specTab = hostTab.newTabSpec("home").setIndicator(" ",getResources().getDrawable(R.drawable.home_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.home_tab);
//hostTab.getTabWidget().getChildAt(0).setLayoutParams(new LinearLayout.LayoutParams(150,50));
mIntent = new Intent(this, ContactUsActivity.class);
specTab = hostTab.newTabSpec("contactUs").setIndicator(" ",getResources().getDrawable(R.drawable.contact_us_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.contact_us_tab);
mIntent = new Intent(this, TravelDetailsActivity.class);
specTab = hostTab.newTabSpec("travelDetails").setIndicator(" ",getResources().getDrawable(R.drawable.travel_details_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.travel_details_tab);
mIntent = new Intent(this, PortGuide.class);
specTab = hostTab.newTabSpec("portGuide").setIndicator(" ",getResources().getDrawable(R.drawable.port_guide_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(3).setBackgroundResource(R.drawable.port_guide_tab);
mIntent = new Intent(this, MoreMenu.class);
specTab = hostTab.newTabSpec("more").setIndicator(" ",getResources().getDrawable(R.drawable.more_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(4).setBackgroundResource(R.drawable.more_tab);
}
这是我的主要活动xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1">
</FrameLayout>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="bottom">
</TabWidget>
</LinearLayout>
</TabHost>
请随时评论我遗漏的内容,以便您进一步了解我的问题。提前谢谢。
答案 0 :(得分:0)
您应该创建一个FragmentActivity
来托管多个Fragments
作为孩子。您可以使用FragmentTabHost
保留标签。
请参阅:
FragmentTabHost Documentation
TabHost Tutorial
Creating a Tab Layout with FragmentTabHost and Fragments
答案 1 :(得分:0)
您可以创建基本活动并编写与其中的标签相关的代码。
使用该活动扩展所有活动,并在所有活动的xml布局中包括与标签相关的部分。
创建BaseActivity有以下函数init:
public class BaseActivity extende Activity{
public void init(){
hostTab = (TabHost) findViewById(R.id.tabhost);
hostTab.setup(this.getLocalActivityManager());
//setting tabs(images)
mIntent = new Intent(this, HomeActivity.class);
specTab = hostTab.newTabSpec("home").setIndicator(" ",getResources().getDrawable(R.drawable.home_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.home_tab);
//hostTab.getTabWidget().getChildAt(0).setLayoutParams(new LinearLayout.LayoutParams(150,50));
mIntent = new Intent(this, ContactUsActivity.class);
specTab = hostTab.newTabSpec("contactUs").setIndicator(" ",getResources().getDrawable(R.drawable.contact_us_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.contact_us_tab);
mIntent = new Intent(this, TravelDetailsActivity.class);
specTab = hostTab.newTabSpec("travelDetails").setIndicator(" ",getResources().getDrawable(R.drawable.travel_details_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.travel_details_tab);
mIntent = new Intent(this, PortGuide.class);
specTab = hostTab.newTabSpec("portGuide").setIndicator(" ",getResources().getDrawable(R.drawable.port_guide_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(3).setBackgroundResource(R.drawable.port_guide_tab);
mIntent = new Intent(this, MoreMenu.class);
specTab = hostTab.newTabSpec("more").setIndicator(" ",getResources().getDrawable(R.drawable.more_tab)).setContent(mIntent);
hostTab.addTab(specTab);
hostTab.getTabWidget().getChildAt(4).setBackgroundResource(R.drawable.more_tab);
}
}
其他活动将扩展这个
public class PortGuide extends BaseActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.<PortGuide layout>);
init();
}
}
确保你有这个:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
所有布局中的