我有一个标签栏,我想添加到多个活动中。我有TabController.java
,看起来像这样
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
public class TabController extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabcontroller);
TabHost tabHost = getTabHost();
Intent intent;
intent = new Intent().setClass(this, Help.class);
TabSpec specHelp = tabHost.newTabSpec("Help").setIndicator("Help")
.setContent(intent);
intent = new Intent().setClass(this, Services.class);
TabSpec specServices = tabHost.newTabSpec("Services").setIndicator("Services")
.setContent(intent);
intent = new Intent().setClass(this, Inbox.class);
TabSpec specInbox = tabHost.newTabSpec("Inbox").setIndicator("Inbox")
.setContent(intent);
intent = new Intent().setClass(this, About.class);
TabSpec specAbout = tabHost.newTabSpec("About").setIndicator("About")
.setContent(intent);
intent = new Intent().setClass(this, More.class);
TabSpec specMore = tabHost.newTabSpec("More").setIndicator("More")
.setContent(intent);
tabHost.addTab(specHelp);
tabHost.addTab(specServices);
tabHost.addTab(specInbox);
tabHost.addTab(specAbout);
tabHost.addTab(specMore);
}
和tabcontroller.xml
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TabHost android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabhost" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_alignParentBottom = "true"
android:layout_height="wrap_content" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</FrameLayout>
</RelativeLayout>
</TabHost>
</merge>
我想要做的是将该布局添加到多个活动中。当我尝试添加布局时,我使用<include layout="@layout/tabcontroller"/>
。当我运行项目时,我的标签栏不会出现在屏幕上。
如何将此标签栏添加到我的活动中? PS。 TabController.java
不是我的主要活动
答案 0 :(得分:0)
请尝试在http://www.codeproject.com/Articles/107693/Tabbed-Applications-in-Android
上查看本教程One Thing我知道,也许我错了,Root Activity类必须继承TAbActivity,对你而言你的TabController.java不是主要的活动。
编辑:这就是我得到的Tabs不是我的Root Activity:
public class ListFragment extends Fragment实现OnTabChangeListener {
View v;
TabHost tabHost;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.main_menu_libraries, container, false);
tabHost=(TabHost) v.findViewById(R.id.tabHost);
tabHost.setup();
TabSpec spec1=tabHost.newTabSpec("Tab 1");
spec1.setContent(R.id.tab1);
spec1.setIndicator("About",getResources().getDrawable(R.drawable.android));
TabSpec spec2=tabHost.newTabSpec("Tab 2");
spec2.setContent(R.id.tab2);
spec2.setIndicator("Blog",getResources().getDrawable(R.drawable.android));
TabSpec spec3=tabHost.newTabSpec("Tab 3");
spec3.setIndicator("Donate",getResources().getDrawable(R.drawable.android));
spec3.setContent(R.id.tab3);
TabSpec spec4=tabHost.newTabSpec("Tab 4");
spec4.setIndicator("Explore",getResources().getDrawable(R.drawable.android));
spec4.setContent(R.id.tab4);
tabHost.addTab(spec1);
tabHost.addTab(spec2);
tabHost.addTab(spec3);
tabHost.addTab(spec4);
return v;
}
如上面的代码我正在使用片段。所以我用包含选项卡和tabwidgets的menu_libraries.xml来扩展我的VIew。 在OncreateView函数内部,我也定义和膨胀标签。 不是最好的答案,但我想你可以试试。