2015-01-16 19 views
5

Sto provando a usare TabHost sulla mia app, e l'ho semplicemente trascinato nella mia attività usando il disegno, ma quando lo eseguo, non apparirà, basta ottenere lo schermo bianco , qualcuno sa perché?TabHost non appare sullo schermo

<TabHost 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/tabHost" 
    android:layout_gravity="center_horizontal"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical"> 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"></TabWidget> 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 

      <LinearLayout 
       android:id="@+id/tab1" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical"></LinearLayout> 

      <LinearLayout 
       android:id="@+id/tab2" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical"></LinearLayout> 

      <LinearLayout 
       android:id="@+id/tab3" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical"></LinearLayout> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 

risposta

9

Questo accade semplicemente perché non si può creare TabHost utilizzando solo il codice XML. È necessario aggiungere TabSpec s al TabHost in questo modo:

TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost); 

TabSpec tab1 = tabHost.newTabSpec("First Tab"); 
TabSpec tab2 = tabHost.newTabSpec("Second Tab"); 
TabSpec tab3 = tabHost.newTabSpec("Third Tab"); 

tab1.setIndicator("Tab1"); 
tab1.setContent(new Intent(this,TabActivity1.class)); 

tab2.setIndicator("Tab2"); 
tab2.setContent(new Intent(this,TabActivity2.class)); 

tab3.setIndicator("Tab3"); 
tab3.setContent(new Intent(this,TabActivity3.class)); 

tabHost.addTab(tab1); 
tabHost.addTab(tab2); 
tabHost.addTab(tab3); 
+1

Qual è il "setContent (new Intent (questo, TabActivity2.class))" il metodo utilizzato per? Lo stavo facendo allo stesso modo ma l'app stava lanciando una NullPointerException, quindi ho finito per sostituirla con setContent (R.id.yourTabId); – Sandoval0992

+0

in questo esempio sto inserendo attività nelle schede quindi dovrai creare 'TabActivity1,2,3' nel tuo progetto – SMR

+0

Hai dimenticato tabHost.setup() (c'era un'eccezione nel mio caso) –

Problemi correlati