2011-03-15 3 views
1

Je souhaite créer une activité dont l'en-tête est en haut et un TabHost en dessous. Voilà ce que j'ai dans mon fichier XMLTabview Android à l'intérieur d'une disposition linéaire

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 
    <include layout="@layout/formheader" /> 
    <TabHost android:id="@+id/distributionTabhost" android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
      <TabWidget android:id="@+id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" /> 
      <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
       <TextView android:id="@+id/textview2" android:layout_width="fill_parent" android:layout_height="fill_parent" 
        android:text="this is another tab" /> 
       <TextView android:id="@+id/textview3" android:layout_width="fill_parent" android:layout_height="fill_parent" 
        android:text="this is a third tab" /> 
      </FrameLayout> 
     </LinearLayout> 
    </TabHost> 
</LinearLayout> 

si vous observez je l'en-tête inclus

<include layout="@layout/formheader" /> 

Ma classe d'activité hérite de l'activité, et non TabActivity. Voici le code pour que

public class DistributionActivity extends android.app.Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.distribution); 

     TabHost mTabHost = (TabHost) findViewById(R.id.distributionTabhost); 
    mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Tab 2").setContent(R.id.textview2)); 
     mTabHost.setCurrentTab(0); 
    } 
} 

Quand je lance l'application, je reçois un EXCEPTION pointeur NULL à la ligne AddTab. Quelqu'un peut-il me guider sur la façon de créer une activité qui a non seulement un onglet, mais d'autres contrôles.

Merci

Répondre

2

résolu le problème

mTabHost.setup(); 

il convient d'ajouter la ligne suivante après setContentView()

+1

Salut Avez-vous réussi à mettre la disposition de l'onglet dans la disposition linéaire? Je pensais que le tabhost doit être le nœud racine? – jamen

2

Comme l'API de niveau 10 le ci-dessus échoue avec:

E/AndroidRuntime (19550): java.lang.RuntimeException: impossible de démarrer activité ... java.lang.RuntimeException: Votre TabHost doit avoir un TabWidget dont l'attribut id est 'android.R.id.tabs de

changer l'ID TabWidget à ce qui suit:

<TabWidget android:id="@android:id/tabs"... 

et tout est bon.

Questions connexes