Frage

ich habe ein Problem mit der Verwendung von TabHost in einem neuen Intent vom Typ TabActivity, die ich hoffe, dass Sie mich in der richtigen Richtung zeigen können. Witziger es funktioniert gut, wenn ich versuche, es in dem ursprünglichen Absicht zu lesen: setContentView (R.layout.main)

ich eine "erzwungene geschlossen" und innerhalb logcat bekam, habe ich die folgende Fehlermeldung erhalten, obwohl meine TabHost id = "@android: id / TabHost":

  

02-18 22: 23: 11,937:   ERROR / Android Runtime (5944): Verursacht durch:   java.lang.RuntimeException: Ihre   Inhalt muss eine TabHost deren ID haben   Attribut 'android.R.id.tabhost'

Ich habe die zweite Absicht in der Manifest.xml Datei deklariert: XML:

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

Innerhalb der ersten Aktivität (MainActivity), ich die zweite Absicht beginnen (NextActivity), mit Extras wie folgt:

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

b_next.putString("s_string", myString); 

nextActivity.putExtras(b_next); 

In meiner NextActivity.java Datei, ich die Extras bekommen und versuchen, die TabHost Ansicht anzuzeigen:

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); 

        } 
}

Ich bekomme den gleichen Fehler mit der Verwendung des TabHost Beispiel auf der Android Developer-Website (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>

Vielen Dank im Voraus Leuten ...

KLARSTELLUNG: Das ist, was ich wirklich von LogCat bekommen:

  

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

War es hilfreich?

Lösung

Ich habe früher tabhosts mit der ID android:id="@+id/tabhost" konstruiert. Ist diese Arbeit für Sie?

Sie können auch prüfen, Ihre Tabansicht Konstruktion programmatisch:

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

Andere Tipps

Ich hatte das gleiche Problem. Zum Glück gab es eine schnelle Lösung:

  1. Löschen Sie die R Datei.
  2. Warten Sie IDE die Datei zu erzeugen.
  3. Profit!

hatte ich kopiert und eingefügt Code und festgestellt, dass in dem id-Attribute hatte ich:

android:id="@+id/tabs" 

wenn das, was ich wirklich wollte, war:

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

Ich traf auch dieses Problem. Ich hatte eine XML-Datei, die nicht gegen meinen Code verbunden war richtig in meinem res / Layout. Als ich die Namensgebung festgelegt, das Problem ging weg.

, obwohl ich meine main.xml zu verwenden android:id="@android:id/tabhost" wie der Fehler angegeben, verändert hatte hielt es versucht, den alten Namen zu verwenden. schließlich fand ich die Datei res / Layout-Port / main.xml, die außer verwendet die falsche android identisch main.xml war: id. Ich muss eine Portraitansicht versehentlich hinzugefügt und es wurde auf den alten Wert zu halten. entweder das Porträt Datei Fixieren oder es behebt mein Problem zu entfernen.

Ich hatte auch diesen Fehler. Für mich wäre es nach Verschleierung (über ProGuard) erscheint, vor Verschleierung war es in Ordnung.

Am Ende umbenannt ich meine Layout-Datei etwas komplexer und einzigartig, und ProGuard tat es nicht vermasselt die Verknüpfung. Bit einleuchtender als die ProGuard configeration Pfad hinunter.

Also meine Frage zu SapphireSun ähnlich war, wenn auch über einen anderen Prozess zum Ausdruck gebracht (und Post Eklipse, um nur die Dinge, die schwierige Bit).

Dies ist vielleicht einer der eher obskuren Möglichkeiten, diesen Fehler zu bekommen, aber ich dachte, ihm eine Erwähnung wert.

"public class NextActivity extends TabActivity" --change TabActivity zu Activity.

, wenn Problem auftreten, wenn Sie wo laufen TabHost wollen in tabhost.it in Ordnung ist.

Ich erlebe den gleichen Fehler in einem Team-Projekt, wenn SVN. Manchmal Eclipse Uploads classes.dex und resources.ap_ aus dem Ordner ist des Projektes und andere bekommen es über SVN Update.

Da diese binären Dateien auf den einzelnen Maschinen mit individuellem Code generiert werden, das ist wahrscheinlich, wo der Fehler kommt.

Reinigen der Projektdateien (Projekt -> Clean) gelöst immer das Problem für uns

!

hatte ich dieses Problem mit 'ERROR: Unbekannte Option "--no-Crunch'. Wenn Sie ADT-Plug-in aktualisiert in Eclipse, aber nicht das SDK zur gleichen Zeit aktualisiert. Aktualisieren der SDK-Manager in Eclipse, das Problem behoben für mich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top