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

私が知っていることの1つは、間違っているかもしれませんが、ルートアクティビティクラスはTAbActivityを継承する必要があり、TabController.javaはメインアクティビティではないということです。

編集:これは、ルートアクティビティではないタブを取得する方法です:

public class ListFragment extends Fragment implement 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 に答える