Problème avec l'affichage des TabHost Mise en page dans le new Intention
Je rencontre un problème avec l'utilisation de TabHost dans une nouvelle Intention de type TabActivity qui, je l'espère, vous pouvez me pointer dans la bonne direction. Curieusement, il fonctionne très bien lorsque je tente de l'afficher dans l'Intention originale : setContentView(R. layout.principal)
Je reçois un "forcé fermé" et à l'intérieur de logcat, j'obtiens l'erreur suivant, même si mon Tabhost id = "@android:id/tabhost":
02-18 22:23:11.937:
ERREUR/AndroidRuntime(5944): Causé par:
java.lang.RuntimeException: Votre
contenu doit avoir un TabHost dont l'id
un attribut est 'android.R.id.tabhost'
Je l'ai déclaré à la seconde intention dans le Manifest.xml fichier:
XML:
<activity android:name=".NextActivity" android:label="@string/app_name" >
À l'intérieur de 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 NextActivity.java fichier, je reçois les extras et essayez 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 la TabHost exemple sur l'Android Developer site (Hellow Vue):
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 d'avance les gens...
De PRÉCISIONS:
C'est ce que j'ai vraiment de LogCat:
java.lang.NullPointerException
au android.widget de.TabHost.dispatchWindowFocusChanged(TabHost.java 285)
au android.vue.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640)
au android.vue.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640)
au android.vue.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640)
au android.vue.ViewRoot.handleMessage(ViewRoot.java 1645)
au android.os.Gestionnaire d'.dispatchMessage(Handler.java 99)
au android.os.Looper.boucle(Looper.java 123)
au android.app.ActivityThread.principale(ActivityThread.java 3948)
à java.lang.de réfléchir.La méthode.invokeNative(Native
La méthode)
à java.lang.de réfléchir.La méthode.invoke(Method.java 521)
au com.android.interne.os.ZygoteInit$MethodAndArgsCaller.exécuter(ZygoteInit.java 782)
au com.android.interne.os.ZygoteInit.principale(ZygoteInit.java 540)
à dalvik.système.NativeStart.principale(langue Maternelle
La méthode)
TabHost.addTab
; bien qu'il ne semble pas que cela seul suffit à provoquer l'erreur, l'absence de ce code est suspect.OriginalL'auteur | 2010-02-19
Vous devez vous connecter pour publier un commentaire.
J'ai déjà construit tabhosts avec un id de
android:id="@+id/tabhost"
. Cela fonctionne pour vous?Vous pourriez aussi envisager la construction de votre onglet vue du programme:
Jack, le nouveau numéro d'identification qui vous a suggéré de ne pas travailler.
Salut Faisal: je ne sais pas si cela s'applique à votre situation, mais, dans certains cas, TabHost.setup() doit être appelée avant d'ajouter des onglets. Voir developer.android.com/intl/de/reference/android/widget/... . Il pourrait être intéressant d'étudier
OriginalL'auteur Graeme Duncan
J'ai eu le même problème. Heureusement, il y avait une solution rapide:
R
fichier.Personne ne sait la raison pour laquelle cela fonctionne? Il a travaillé pour moi btw. Je vous remercie.
OriginalL'auteur whirlwin
J'avais copié et collé le code et remarqué que dans l'attribut id que j'avais:
quand ce que je voulais, c'était:
Grand homme.... Court et la réponse correcte....
OriginalL'auteur ninjasense
J'ai aussi rencontré ce problème. J'ai eu un fichier XML qui n'était pas lié à l'encontre de mon code correctement dans mon res/layout. Quand je fixe la dénomination, le problème a disparu.
OriginalL'auteur SapphireSun
même si j'avais changé mon main.xml pour 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 est identique à main.xml à l'exception de mal android:id. je doit en avoir un affichage portrait accidentellement et il se tenait à l'ancienne valeur. fixant le portrait fichier ou la suppression il résout mon problème.OriginalL'auteur jay
J'ai aussi eu cette erreur. Pour moi, il semblerait, d'après l'obfuscation(via ProGuard), avant de dissimulation, il était beau.
À la fin, j'ai renommé mon fichier de mise en page à quelque chose de plus complexe et unique, et ProGuard ne pas gâcher la liaison. Peu easer que de descendre le ProGuard configeration chemin.
Donc ma question est similaire à SapphireSun, bien qu'exprimée par l'intermédiaire d'un processus différent(et après l'éclipse, juste pour rendre les choses un peu plus difficile).
C'est peut-être l'un des plus obscurs façons d'obtenir cette erreur, mais j'ai pensé qu'il mérite une mention.
OriginalL'auteur rndStr
"public class NextActivity extends TabActivity"
--changement TabActivity à ActivityGroup.lorsque le problème se produit-il lorsque vous voulez wo exécuter tabhost dans tabhost.il est ok.
OriginalL'auteur heihei
Je suis en train de vivre la même erreur dans une équipe-projet, lors de l'utilisation de SVN. Parfois, eclipse uploads classes.dex et de ressources.ap_ à partir du dossier bin du projet et d'autres l'obtenir via SVN update.
Depuis ces fichiers binaires sont générés sur les machines avec code individuel, c'est sans doute d'où vient l'erreur.
De nettoyage des fichiers de projet (Project -> Nettoyer) toujours résolu le problème pour nous!
OriginalL'auteur sege
J'ai eu ce problème avec " ERROR: Unknown option '--no-crunch". Si vous avez mis à jour ADT plug-in Eclipse, mais n'ont pas mis à jour le SDK en même temps. Mise à jour du SDK Manager dans Eclipse, fixe le problème pour moi.
OriginalL'auteur craigk