Domanda

Sto avendo un problema con l'utilizzo di TabHost in una nuova intenti di tipo TabActivity che spero mi si può puntare nella giusta direzione. Stranamente funziona benissimo quando cerco di vederlo nel intento originale: setContentView (R.layout.main)

ho un "costretto chiuso" e all'interno di logcat, ottengo il seguente errore anche se la mia Tabhost id = "@android: id / tabhost":

  

02-18 22: 23: 11,937:   ERRORE / AndroidRuntime (5944): a causa di:   java.lang.RuntimeException: Il tuo   il contenuto deve avere un TabHost il cui id   attributo è 'android.R.id.tabhost'

ho dichiarato il secondo intento nel file Manifest.xml: XML:

<activity android:name=".NextActivity" android:label="@string/app_name" > 

Nell'ambito della prima attività (MainActivity), inizio il secondo intento (NextActivity), con extra, come segue:

Intent nextActivity = new Intent(MainActivity.this,NextActivity.class); 
Bundle b_next=new Bundle(); 

b_next.putString("s_string", myString); 

nextActivity.putExtras(b_next); 

Nel mio file NextActivity.java, ottengo gli extra e cerco di visualizzare il TabHost Vista:

public class NextActivity extends TabActivity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 

        String myString; 
        Bundle b_initial; 

        b_initial = getIntent().getExtras(); 

        myString = b_initial.getString("s_string"); 

     setContentView(R.layout.main); 

        } 
}

ottengo lo stesso errore con utilizzando l'esempio TabHost sul sito per sviluppatori Android (Hellow View):

main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    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="@android: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/textview1" 
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent" 
                android:text="this is a tab" /> 
            <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>

Grazie in anticipo la gente ...

PRECISAZIONE: Questo è ciò che davvero ottenere da LogCat:

  

java.lang.NullPointerException
       a android.widget.TabHost.dispatchWindowFocusChanged (TabHost.java 285)        a android.view.ViewGroup.dispatchWindowFocusChanged (ViewGroup.java 640)        a android.view.ViewGroup.dispatchWindowFocusChanged (ViewGroup.java 640)        a android.view.ViewGroup.dispatchWindowFocusChanged (ViewGroup.java 640)        a android.view.ViewRoot.handleMessage (ViewRoot.java 1645)        a android.os.Handler.dispatchMessage (Handler.java 99)        a android.os.Looper.loop (Looper.java 123)        a android.app.ActivityThread.main (ActivityThread.java 3948)        a java.lang.reflect.Method.invokeNative (Native   Method)
       a java.lang.reflect.Method.invoke (Method.java 521)        a com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java 782)        a com.android.internal.os.ZygoteInit.main (ZygoteInit.java 540)        a dalvik.system.NativeStart.main (Native   Metodo)

È stato utile?

Soluzione

Ho già costruito tabhosts con un id di android:id="@+id/tabhost". Fa questo lavoro per voi?

Si potrebbe anche prendere in considerazione la costruzione di vostra visualizzazione a schede di programmazione:

    TabHost t = getTabHost();
    TabSpec tab = t.newTabSpec(label)
                   .setIndicator(label, icon)
                   .setContent(intent);
    t.addTab(tab);

Altri suggerimenti

Ho avuto lo stesso problema. Per fortuna c'era una soluzione rapida:

  1. Eliminare il file R.
  2. Attendere che il vostro IDE per generare il file.
  3. profitto!

avevo copiato e incollato il codice e ho notato che l'attributo id che ho avuto:

android:id="@+id/tabs" 
era

quando quello che volevo veramente:

android:id="@android:id/tabs"

Ho anche incontrato questo problema. Ho avuto un file XML che non è stato legato contro il mio codice correttamente nel mio res / layout. Quando ho fissato la denominazione, il problema è andato via.

anche se avevo cambiato la mia main.xml utilizzare android:id="@android:id/tabhost" come l'errore indicato, si continuava a cercare di utilizzare il vecchio nome. finalmente ho trovato la res di file / layout di porte / main.xml che era identico a main.xml tranne usato l'androide sbagliato: id. Devo aver aggiunto una vista ritratto accidentalmente ed è stato aggrappandosi al vecchio valore. sia che fissa il file di ritratto o la rimozione si risolve il problema.

Inoltre ho avuto questo errore. Per me sarebbe comparire dopo offuscamento (via ProGuard), pre offuscamento è andato tutto bene.

Alla fine ho rinominato il file di layout a qualcosa di più complesso e unico, e ProGuard no rovinare il collegamento. Bit easer che andare giù per il sentiero ProGuard configeration.

Quindi il mio problema era simile a SapphireSun, anche se espresso attraverso un processo diverso (e post eclissi, solo per fare le cose che po 'più difficile).

Questo è forse uno dei modi più oscuri per ottenere questo errore, ma ho pensato che merita una menzione.

"public class NextActivity extends TabActivity" --change TabActivity a ActivityGroup.

quando il problema accade quando si desidera eseguire wo tabhost in tabhost.it è ok.

sto vivendo lo stesso errore in un team progetto, quando si utilizza SVN. A volte, upload eclissi classes.dex e resources.ap_ dalla cartella bin del progetto e altri ottengono via l'aggiornamento SVN.

Dal momento che questi file binari vengono generati sulle singole macchine con codice individuale, thats probabilmente dove l'errore proviene.

Pulizia dei file di progetto (Project -> Clean) sempre risolto il problema per noi

!

Ho avuto questo problema con 'ERRORE: Opzione sconosciuta '--no-crisi''. Se si è aggiornato ADT plug-in in Eclipse, ma non hanno aggiornato l'SDK, allo stesso tempo. Aggiornamento del SDK Manager Eclipse, risolto il problema per me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top