标签栏未显示在活动中

时间:2012-07-25 14:33:02

标签: android android-tabhost

我有一个标签栏,我想添加到多个活动中。我有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不是我的主要活动

1 个答案:

答案 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函数内部,我也定义和膨胀标签。 不是最好的答案,但我想你可以试试。