0

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

4

1 回答 1

0

尝试查看本教程: http: //www.codeproject.com/Articles/107693/Tabbed-Applications-in-Android

我知道的一件事,也许我错了,是 Root Activity 类必须继承 TAbActivity 而对你来说,你的 TabController.java 不是主要活动。

编辑:这就是我获取不是我的根活动的选项卡的方式:

公共类 ListFragment 扩展 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;
}

在上面的代码中,我正在使用片段。所以我用包含选项卡和选项卡小部件的 menu_libraries.xml 来扩充我的视图。在 OncreateView 函数中,我也在定义和扩展选项卡。不是最好的答案,但我想你可以试试。

于 2012-07-25T15:24:46.983 回答