Question

J'ai un problème avec l'utilisation TabHost dans une nouvelle intention de type TabActivity que j'espère que vous pouvez me diriger dans la bonne direction. Étrangement, il fonctionne très bien lorsque je tente de voir dans l'intention initiale: setContentView (R.layout.main)

Je reçois un "forcé fermé" et dans logcat, je reçois l'erreur suivante même si mon Tabhost id = "@android: id / tabhost":

  

02-18 22: 23: 11,937:   ERREUR / AndroidRuntime (5944): provoqué par:   java.lang.RuntimeException: Votre   le contenu doit avoir un TabHost dont l'id   attribut est 'android.R.id.tabhost'

Je l'ai déclaré la deuxième intention dans le fichier Manifest.xml: XML:

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

Dans la première activité (MainActivity), je commence à la deuxième intention (NextActivity), avec des extras, comme suit:

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

b_next.putString("s_string", myString); 

nextActivity.putExtras(b_next); 

Dans mon fichier NextActivity.java, je reçois les extras et essayer d'afficher le TabHost Vue:

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

        } 
}

Je reçois la même erreur avec l'aide de l'exemple TabHost sur le site développeur 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>

Merci à l'avance les gens ...

CLARIFICATION: C'est vraiment ce que je reçois de LogCat:

  

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

Était-ce utile?

La solution

je l'ai déjà construit tabhosts avec un id de android:id="@+id/tabhost". Est-ce pour vous?

Vous pouvez aussi envisager de construire votre vue de l'onglet programme:

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

Autres conseils

J'ai eu le même problème. Heureusement, il y avait une solution rapide:

  1. Supprimez le fichier R.
  2. Attendez que votre IDE pour générer le fichier.
  3. Profit!

J'avais copié et collé le code et a remarqué que dans l'attribut id j'avais:

android:id="@+id/tabs" 

quand ce que je voulais vraiment était:

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

J'ai aussi rencontré ce problème. J'ai eu un fichier XML qui n'a pas été lié avec mon code correctement dans ma résolution / mise en page. Lorsque je fixe la dénomination, le problème a disparu.

même si j'avais changé main.xml à utiliser android:id="@android:id/tabhost" comme l'erreur a déclaré, il a continué à essayer d'utiliser l'ancien nom. enfin j'ai trouvé le fichier res / layout port / main.xml qui était identique à l'exception main.xml utilisé le mauvais android: id. Je dois avoir ajouté une vue portrait accidentellement et il tenait à la valeur ancienne. soit fixer le fichier portrait ou le supprimer fixe mon problème.

J'ai aussi eu cette erreur. Pour moi, il semble après obscurcissement (via ProGuard), avant l'obscurcissement était très bien.

En fin de compte, je renomme mon dossier de mise en page à quelque chose de plus complexe et unique, et ProGuard ne l'ai pas gâcher la mise en relation. Bit easer que d'aller sur le chemin de configeration ProGuard.

Donc, ma question était semblable à SapphireSun, bien exprimée au moyen d'un processus différent (et éclipse de poste, juste pour faire des choses que peu plus difficile).

Ceci est peut-être l'un des moyens les plus obscurs pour obtenir cette erreur, mais je pense qu'il mérite une mention.

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

quand le problème se produit lorsque vous voulez exécuter tabhost dans wo tabhost.it est ok.

Je ressentais la même erreur dans une équipe projet, lors de l'utilisation SVN. Parfois, le téléchargement éclipse classes.dex et resources.ap_ du dossier bin du projet et d'autres obtenir via la mise à jour SVN.

Étant donné que ces fichiers binaires sont générés sur les machines individuelles avec code individuel, thats probablement où l'erreur vient.

Nettoyage des fichiers de projet (Project -> Clean) toujours résolu le problème pour nous

J'ai eu ce problème avec 'ERREUR: Option inconnue '--no-crunch''. Si vous avez mis ADT plug-in Eclipse, mais n'a pas mis à jour le SDK en même temps. Mise à jour du SDK Manager dans Eclipse, résolu le problème pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top