frmoul Posted January 31, 2011 Share Posted January 31, 2011 (edited) 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> Edited February 2, 2011 by frmoul Quote Link to comment Share on other sites More sharing options...
frmoul Posted January 31, 2011 Author Share Posted January 31, 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 Quote Link to comment Share on other sites More sharing options...
chpil Posted February 1, 2011 Share Posted February 1, 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 Quote Link to comment Share on other sites More sharing options...
Elth Posted February 1, 2011 Share Posted February 1, 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 =) Quote Link to comment Share on other sites More sharing options...
frmoul Posted February 1, 2011 Author Share Posted February 1, 2011 (edited) Bonsoir, Merci pour ces informations. (j'ai enlevé le logcat car le premier problème est résolu. Le post en sera plus lisible). Edited February 2, 2011 by frmoul Quote Link to comment Share on other sites More sharing options...
chpil Posted February 2, 2011 Share Posted February 2, 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. Quote Link to comment Share on other sites More sharing options...
frmoul Posted February 2, 2011 Author Share Posted February 2, 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. Quote Link to comment Share on other sites More sharing options...
moritan Posted February 3, 2011 Share Posted February 3, 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> Quote Link to comment Share on other sites More sharing options...
frmoul Posted February 4, 2011 Author Share Posted February 4, 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> Quote Link to comment Share on other sites More sharing options...
chpil Posted February 5, 2011 Share Posted February 5, 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... Quote Link to comment Share on other sites More sharing options...
frmoul Posted February 5, 2011 Author Share Posted February 5, 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... Quote Link to comment Share on other sites More sharing options...
chpil Posted February 7, 2011 Share Posted February 7, 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.