frmoul Posté(e) 31 janvier 2011 Share Posté(e) 31 janvier 2011 (modifié) Bonsoir, J'ai créé une application pour tester l'utilisation d'onglets dans le but d'en intégrer à une appli une fois cette programmation comprise. J'ai donc suivi un tuto. Une fois lancée, l'appli ne montre rien, seulement son nom en entête (alors que dans le manifest il est demandé de ne pas afficher la ligne de titre...). Je poste tout le code ci-dessous. Si vous aviez une idée du problème, je suis preneur. Je n'arrive pas à trouver ce qui cloche. Voici "ActiveTab.java" : package utilisation.onglet; import android.app.Activity; import android.app.TabActivity; import android.app.TabActivity; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.TabSpec; import android.widget.TextView; public class ActiviteTab extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab1); //On récupère notre intent et la valeur nommée valeur String valeur = getIntent().getStringExtra("valeur"); //On affiche cette chaîne dans le textview TextView textView = (TextView) findViewById(R.id.TextView01); textView.setText(valeur); } } Voici "onglet.java" : package utilisation.onglet; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.TabSpec; public class onglet extends TabActivity { /** Called when the activity is first created. */ private TabHost host; private TabSpec spec; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = new Intent(this, ActiviteTab.class); host = getTabHost(); intent.putExtra("valeur", "Coucou tout le monde"); spec = host.newTabSpec("un").setIndicator("Un", getResources().getDrawable(R.drawable.icon)).setContent(intent); host.addTab(spec); intent.putExtra("valeur", "Hello world !"); spec = host.newTabSpec("deux").setIndicator("Deux").setContent(intent); host.addTab(spec); } } Voici main.xml : <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/content" 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="65px"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="200px" android:paddingTop="65px"> </FrameLayout> </LinearLayout> </TabHost> Voici Tab1.xml : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"></TextView> </LinearLayout> Voici AndroidManifest.xml : <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="utilisation.onglet" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".onglet" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> </activity> <activity android:name=".ActiviteTab"></activity> </application> <uses-sdk android:minSdkVersion="4" /> </manifest> Modifié 2 février 2011 par frmoul Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
frmoul Posté(e) 31 janvier 2011 Auteur Share Posté(e) 31 janvier 2011 Je vous envoie carrement le répertoire zippé du projet. Ca sera plus rapide si vous avez un moment pour y jeter un oeil. frmoul Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 1 février 2011 Share Posté(e) 1 février 2011 Utilise les balises et [ /code] pour formater tes extraits de code, ça rendra ton post plus lisible, et cela sera plus facile de t'aider Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Elth Posté(e) 1 février 2011 Share Posté(e) 1 février 2011 Bonjour, Précises aussi où se trouve l'erreur si possible en regardant dans ton LogCat, ça évitera de chercher dans tout le code =) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
frmoul Posté(e) 1 février 2011 Auteur Share Posté(e) 1 février 2011 (modifié) Bonsoir, Merci pour ces informations. (j'ai enlevé le logcat car le premier problème est résolu. Le post en sera plus lisible). Modifié 2 février 2011 par frmoul Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 2 février 2011 Share Posté(e) 2 février 2011 Tes deux Activity héritent de TabActivity, alors que ce ne doit être le cas que de la seule l'Activity principale, pas de celles qui correspondent aux onglets. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
frmoul Posté(e) 2 février 2011 Auteur Share Posté(e) 2 février 2011 Bonsoir, Merci, j'ai corriger selon ce conseil. Maintenant l'appli se lance sans erreur, par contre, on ne voit que la ligne de titre (qui devrait être masqué selon ce qui est écrit dans le manifest). On ne voit pas les onglets. D'où ça pourrait venir ? J'ai mis à jour le code au début du post. Frmoul Tes deux Activity héritent de TabActivity, alors que ce ne doit être le cas que de la seule l'Activity principale, pas de celles qui correspondent aux onglets. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 3 février 2011 Share Posté(e) 3 février 2011 passe le layout height de ton tab widget en wrap_content au lieu de fill_parent DE plus tu n'as pas intent-filter sur ton activity principale <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
frmoul Posté(e) 4 février 2011 Auteur Share Posté(e) 4 février 2011 Bonsoir, J'ai modifié le manifest comme suit, mais l'ajout de ce code génère une erreur dès le lancement de l'application. Ais-je mis le code au mauvais endroit ? Est-ce que ce code est indispensable ? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="utilisation.onglet" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".onglet" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ActiviteTab"></activity> </application> <uses-sdk android:minSdkVersion="4" /> </manifest> passe le layout height de ton tab widget en wrap_content au lieu de fill_parent DE plus tu n'as pas intent-filter sur ton activity principale <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 5 février 2011 Share Posté(e) 5 février 2011 Je n'ai pas l'impression que tu as fait les corrections dans le sens que je t'indiquais : ActiviteTab DOIT hériter de TabActivity et onglet NE DOIT PAS hériter de TabActivity De même, dans le manifest.xml, la définition de l'intent filter doit être faite pour ActivityTab, pas onglet J'ai mis à jour le code au début du post. Je ne trouve pas que ce soit une bonne idée. Cela rend les réponses qui suivent incompréhensibles, puisque les solutions qu'elles proposent font référence à un problème qui n'est plus présent dans tes extraits de code. Et, ça n'a plus aucun intérêt pour les futurs lecteurs de ce post qui viendraient y chercher des informations... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
frmoul Posté(e) 5 février 2011 Auteur Share Posté(e) 5 février 2011 Bonjour, encore merci pour ta patience et ton aide mais je dois mal comprendre quelque chose. Je pensais que l'activité principale est justement "onglet.java". Les noms des activités sont peut être mal choisis. En effet, dans ActivityTab il y a la description du format d'un onglet type et dans onglet il y a la créations des onglets utilisant le format décrit dans ActivityTab. Est-ce bien "onglet.java" l'activité principale ? frmoul Je n'ai pas l'impression que tu as fait les corrections dans le sens que je t'indiquais : ActiviteTab DOIT hériter de TabActivity et onglet NE DOIT PAS hériter de TabActivity De même, dans le manifest.xml, la définition de l'intent filter doit être faite pour ActivityTab, pas onglet Je ne trouve pas que ce soit une bonne idée. Cela rend les réponses qui suivent incompréhensibles, puisque les solutions qu'elles proposent font référence à un problème qui n'est plus présent dans tes extraits de code. Et, ça n'a plus aucun intérêt pour les futurs lecteurs de ce post qui viendraient y chercher des informations... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 7 février 2011 Share Posté(e) 7 février 2011 C'est l'Activity principale, celle qui contient la barre d'onglets, qui doit hériter de TabActivity. Et les Activities qui correspondent au contenu des onglets héritent simplement de Activity Pour mieux comprendre toute cette problématique d'onglets, tu peux te référer au tutoriel sur le site développeur Android : ici Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.