IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Conversion d'un menu en bouton en menu en onglets


Sujet :

Composants graphiques Android

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut Conversion d'un menu en bouton en menu en onglets
    Bonjour à tous,

    J'ai actuellement dans mon application un footer sur chaque vue qui me sert de menu. Dans ce footer, j'ai 4 imageButton qui mènent vers différents endroits de l'application.

    J'aimais pas trop ce principe un peu lourd à gérer au niveau de la gestion des vues. Je souhaiterais maintenant remplacer mon footer par ça : http://unknownerror.net/2011-06/andr...e-screen-34334

    Mais actuellement, j'ai une vingtaine de xml avec presque autant d'activity associé... Que me conseillez vous pour ne pas passer des jours à effectuer cette conversion ? Je ne vois pas bien comment je pourrais faire pour garder mes activity, car j'ai l'impression qu'avec ce système, j'aurais une seule activity et que je devrais gérer dynamiquement le changement de contenu des onglets.

    Merci d'avance pour votre aide

    EDIT : J'ai l'impression de m'être mal fait comprendre... je réessaye...
    P est l'activité principale, avec 4 onglets pour le menu.
    P peut donc lancer 4 activités : A B C D
    Le problème c'est que pour l'instant A, B, C et D lancent elles mêmes des activités (sous activités). Et pour l'instant, quand elles lancent ces sous activités via des intents, cela fait passer en arrière plan l'activité avec des onglets, pour afficher l'activité appelée (logique !). Donc comment faire pour que la sous activité soient lancé dans l'activité principale ? Je peux bien remplacer l'activité de l'onglet... mais ça enlève toute la partie retour sur l'ancienne activité gérée par android.

    J’espère que vous m'aurez mieux compris...

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 141
    Par défaut
    j'ai décidé d'employer ceci, de mon coté pour faire mes onglets
    http://www.ace-art.fr/wordpress/2010...1-les-tabhost/

    l'avantage c'est que avec une page je gère les onglets de partout.

  3. #3
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Tu n'as pas besoin de changer tes activity , peut être les modifier un peu sur les appels. le but du jeu c'est d'avoir une Acitivity parente qui gère ces Activity filles se trouvant dans les onglets .

    Tu as des tutoriels pour t'expliquer le fonctionnement des onglets ici
    http://a-renouard.developpez.com/tut...oid/tablayout/

    et ici
    http://developer.android.com/resourc...tabwidget.html

    Après si tu as des questions n'hésite pas .

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    Merci pour votre aide

    J'éditais mon message au moment ou vous avez répondus.
    Jetez-y un œil si vous avez le temps... Car je crois que ce que vous m'avez donner comme lien ne réponds pas à ma question (je peux me tromper...)

    @Feanorin : ton premier lien, c'est une blague ? xD

    Vos tutos expliquent bien comment avoir des activités filles, mais pas comment avoir des activités "petites filles" tout en gardant les onglets de l'activité parent, et sans perdre l’aspect retour (donc pas remplacer l'intent de l'onglet)... (je ré-explique à chaque fois différemment... peut être que je serais clair un jour... désolé !)

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Bonjour,
    Si tu ne veux pas que tes onglets disparaissent, tu dois utiliser ActivityGroup.
    Voici un petit tuto pour mieux comprendre : http://ericharlow.blogspot.com/2010/...ctivities.html.

    En gros chaque onglet possède une seule activité qui hérite de ActivityGroup. Et c'est elle qui se charge de faire venir les nouvelles activités. Ça peut paraître un peu difficile quand je l'explique, mais tu verras que c'est assez simple au final

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    Ahh ! Bah voila, quelqu'un qui m'a compris ^^

    Désolé c'est de ma faute j'avais du mal a expliqué le soucis, j'ai pas encore regardé ta solution mais elle semble tout à fait convenir :=)

    Je vais regarder ça de très près.

    Par contre, j'ai encore un autre soucis avec cette nouvelle solution que je compte implémenter. Ce lien http://unknownerror.net/2011-06/andr...e-screen-34334 explique comment mettre les onglets en pied de page, mais l'ennuie c'est que cela demande l'utilisation d'un relativeLayout. Ducoup, maintenant, mes vues se superposent aux onglets.

  7. #7
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,


    @Feanorin : ton premier lien, c'est une blague ? xD
    C'est pour cela que j'avais mis un second lien . je voulais juste t'orienter avec le premier.

    Par contre, j'ai encore un autre soucis avec cette nouvelle solution que je compte implémenter. Ce lien http://unknownerror.net/2011-06/andr...e-screen-34334 explique comment mettre les onglets en pied de page, mais l'ennuie c'est que cela demande l'utilisation d'un relativeLayout. Ducoup, maintenant, mes vues se superposent aux onglets.
    Tu peux le créer à partir d'un LinearLayout il me semble au lieu du Relativelayout pour avoir le TabWidget en bas.

    J'éditais mon message au moment ou vous avez répondus.
    Jetez-y un œil si vous avez le temps... Car je crois que ce que vous m'avez donner comme lien ne réponds pas à ma question (je peux me tromper...)
    C'est bien la solution d'AndroChristophe qu'il faut utiliser pour ce cas là.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Tu peux le créer à partir d'un LinearLayout il me semble au lieu du Relativelayout pour avoir le TabWidget en bas.
    Tout à fait ! Rien ne t'empêches d'utiliser les LinearLayout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <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">
    		<FrameLayout android:id="@android:id/tabcontent"
    			android:layout_width="fill_parent" android:layout_height="fill_parent"
    			>
    		</FrameLayout>
    		<TabWidget android:id="@android:id/tabs"
    			android:layout_width="fill_parent" android:layout_height="wrap_content" />
    	</LinearLayout>
    </TabHost>

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Tu peux le créer à partir d'un LinearLayout il me semble au lieu du Relativelayout pour avoir le TabWidget en bas.
    Effectivement, j'ai réussi avec le linearLayout. Pour ceux qui galèrerais et qui passerais sur ce sujet, voici la marche à suivre (en partant du lien que j'ai posté plus haut) :

    1) Inverser l'ordre du FrameLayout et du TabWidget (Le FrameLayout qui contient vos onglets en premier, puis le TabWidget en dessous)

    2) Mettez un poids de 1 au FrameLayout (android:layout_weight="1")

    3) Changez le RelativeLayout pour un LinearLayout, et supprimez le android:layout_alignParentBottom="true" devenu obsolète.

    Merci pour votre aide, je mettrais le sujet en résolu quand j'aurais créez avec succès mes groupActivity, je n'ai pas encore eu le temps de regarder ce point


    EDIT : Encore une réponse apparue au moment ou je postais la mienne ^^ On utilise pas la meme technique (j'utilise les poids), mais le résultat est le même ! Merci beaucoup AndroChristophe :=)

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    J'ai lu le tuto que tu as posté AndroChristophe, il a l'air de me convenir, à un problème près.

    Cette méthode nécessite de remplacer le extends Activity par un extends TabGroupActivity (perso). Certaines de mes activités héritent de ExpandableListActivity, ou autre type d'activités particulières. Comment me conseillez vous de procéder dans ce cas ? Je vois bien la solution qui consisterait à avoir un TabGroupActivity, un TabGroupExpandableListActivity, etc pour toutes les activités, mais cette solution ne me parait pas vraiment optimisée...

    L'auteur parle dans son deuxième paragraphe de ListActivity

    Child Activities like a ListActivity may handle the back button just override the appropriate methods for your OS version, and call onBackPressed() for the (parent) ActivityGroup. An example would look like this for OS 2.1.
    Mais j'ai pas bien compris ce qu'il disais (apparemment il y a une gestion différente à faire pour le bouton retour du téléphone selon la version de l'OS... gênant)

    EDIT : autre problème dont j'ai oublié de vous parler. Dans mon ancien menu, j'avais une entrée de menu qui menait à l'activité A ou B selon différents cas. Dans le cas d'un onglet, j'ai l'impression qu'on a qu'une seule activité prédéfinie... Vous me conseillez de faire comment ? Je vois bien quelques solution qui ne me paraissent pas suffisamment propre...

    EDIT 2 : Enfaite (pour le premier problème) j'avais mal compris, il faut faire autant de classes que d'onglets faisant un startChildActivity, et cela resouds donc le deuxième problème (de l'EDIT, que je m'empresse de barrer ) ! Je ne comprends cependant toujours pas ce que l'auteur dit (voir plus haut), et j'ai un gros problème :je n'avais pas remarqué mais les vues apparaissent avec une marge noire ! Parent ou child, les onglets m'ont imposés cette marge... Comment cela se fait il ?

    EDIT 3 : Qu'en est-t-il du startActivityForResult() ???

    EDIT 4 : Finalement, je commence à douter de la solution. En effet, apparemment, aucun startActivityForResult() n'a été implémenté et cause des bugs quand les gens essayent de l'implémenter avec cette solution (voir commentaires du post de l'auteur).

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Bonjour,
    J'avais également rencontré des problèmes avec la méthode startActivityForResult. Je me souviens plus exactement comment j'avais fait pour m'en passer. Après je n'ai pas trouvé d'autres méthodes sur internet plus simple pour gérer les ActivityGroup. Si tu trouves une autre solution, n'hésites pas à le partager sur ce sujet (ça m'intéresse aussi).

    Avec tous ces edit je suis perdu , est ce qu'il te reste encore des questions (à part le startActivityForResult) ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    Oui désolé pour les edits je voulais éviter le multi-post...
    Merci pour ton aide en tout cas !

    Donc maintenant mes ennuis restants portent sur le startActivityForResult et plein de petits détails.

    L'ennuie, c'est que tout devient compliquer avec cette méthode. Par exemple, je n'arrive plus à faire fonctionner mes spinners ! L'auteur dit avoir donné un exemple, mais le contenu de son spinner est static.

    Code de mon spinner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Spinner mySpinner= ((Spinner ) this.findViewById(R.id.my_spinner));
    ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);        
     
    myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mySpinner.setAdapter(myAdapter);
    Et j'obtiens un windows manager bad token exception...

  13. #13
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Oui désolé pour les edits je voulais éviter le multi-post...
    Merci pour ton aide en tout cas !
    Bonjour,

    Quand tu penses que cela mérite d'ouvrir un nouveau post, pour que cela soit plus clair (car beaucoup d'edit), n'hésite pas , sinon on se perds dans les edit ou dans ce cas il faut bien reformuler la demande dans ceux-ci.


    Et j'obtiens un windows manager bad token exception...
    Attention dans une TabActivity, il faut que les Activity fille utilise le Context Parent pour afficher Dialogue et autre interface Graphique.

    Donc pour ton spinner utilise GetParent() lors de sa création .

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    OK, je ferais un nouveau post la prochaine fois, désolé.

    Pour le spinner, j'avais déja pensé à ça, mais avec le getParent(), j'ai la même erreur.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    Sinon, je me pose quelques questions sur la gestion des onglets.

    - Dans le onCreate d'un de mes onglets, je choisis de lancer l'activité A ou l’activité B en fonction de certains paramètres. Seulement pendant l’exécution de l'application, l'activité à charger peut changer. Comment actualiser le contenu de l'onglet dans pareil cas ?

    - Il m'arrive d'arriver sur l'onglet numéro Y via l'onglet numéro X. Je voudrais dans ces cas spéciaux, à la fin de Y (finish() ??), retourner sur X.

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Citation Envoyé par vivelapsp Voir le message
    - Dans le onCreate d'un de mes onglets, je choisis de lancer l'activité A ou l’activité B en fonction de certains paramètres. Seulement pendant l’exécution de l'application, l'activité à charger peut changer. Comment actualiser le contenu de l'onglet dans pareil cas ?
    En gros tu fais des actions sur un onglet A et cela influence non pas l'activité mais le layout qui devra être affiché dans l'onglet B, c'est ça ? Lorsque tu passes d'un onglet A à un onglet B, l'activité de l'onglet A passe par la méthode onPause et donc quand tu reviens dessus elle appelle la méthode onResume. Je pense que tu devrais faire tes tests dans cette méthode pour voir si tu dois changer ton layout ou pas.


    Citation Envoyé par vivelapsp Voir le message
    - Il m'arrive d'arriver sur l'onglet numéro Y via l'onglet numéro X. Je voudrais dans ces cas spéciaux, à la fin de Y (finish() ??), retourner sur X.
    Humm, je ne suis pas un expert en dev ni en application mobile, mais il me semble que c'est plutot une erreur de conception. Une activité appartenant à un onglet ne peut pas te mettre sur un autre onglet. De plus chaque onglet a sa propre pile d'activités. Je ne pense pas que tu puisses facilement aller sur l'activité d'une pile en fermant une activité appartenant à une autre pile. Si tu es arrivé à changer d'onglet grâce à une activité, tu peux faire la même chose lorsque tu finis ton activité (changement d'onglet puis finish sur l'activité).

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    Citation Envoyé par AndroChristophe Voir le message
    En gros tu fais des actions sur un onglet A et cela influence non pas l'activité mais le layout qui devra être affiché dans l'onglet B, c'est ça ? Lorsque tu passes d'un onglet A à un onglet B, l'activité de l'onglet A passe par la méthode onPause et donc quand tu reviens dessus elle appelle la méthode onResume. Je pense que tu devrais faire tes tests dans cette méthode pour voir si tu dois changer ton layout ou pas.
    Oui, j'ai pensé à cette méthode qui ne me convient pas car je peux être sur l'onglet en question qui n'a pas toujours le même layout et vouloir changer son layout. Dans ce cas la, onResume ne sera pas appelé. De plus, dans le onResume, je ne sais pas quoi faire... En effet, je ne veux pas lancer une nouvelle activité (avec nouveau layout), je veux remplacer l'ancienne.

    Citation Envoyé par AndroChristophe Voir le message
    Humm, je ne suis pas un expert en dev ni en application mobile, mais il me semble que c'est plutot une erreur de conception. Une activité appartenant à un onglet ne peut pas te mettre sur un autre onglet. De plus chaque onglet a sa propre pile d'activités. Je ne pense pas que tu puisses facilement aller sur l'activité d'une pile en fermant une activité appartenant à une autre pile. Si tu es arrivé à changer d'onglet grâce à une activité, tu peux faire la même chose lorsque tu finis ton activité (changement d'onglet puis finish sur l'activité)..
    Je ne pense pas que cela soit un problème de conception. Il est parfois utile de rediriger l'utilisateur plûtot que simplement lui dire "aller la-bas". Effectivement, je suis arrivé à changer d'onglet grâce à une activité, mais quand je veux y revenir, je ne sais plus qui l'a appelé. Utilisé putExtra peut vite devenir lourd. Non ?

  18. #18
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    OK, je ferais un nouveau post la prochaine fois, désolé.
    Non pas bien grave, à toi de voir ce qui te semble le plus juste , comme tu l'as signalé il faut éviter au maximum le multipost .

    Pour le spinner, j'avais déja pensé à ça, mais avec le getParent(), j'ai la même erreur.
    En tout cas l'erreur provient bien de là. Il faut que tu lui passes le Context de ta TabActivity.

    Oui, j'ai pensé à cette méthode qui ne me convient pas car je peux être sur l'onglet en question qui n'a pas toujours le même layout et vouloir changer son layout. Dans ce cas la, onResume ne sera pas appelé. De plus, dans le onResume, je ne sais pas quoi faire... En effet, je ne veux pas lancer une nouvelle activité (avec nouveau layout), je veux remplacer l'ancienne.
    Lors d'un changement d'onglet tu auras toujours le OnResume et OnPause d'appeller , le OnPause de ton activity précédente , et le OnResume de ta nouvelle Activity.

    Donc c'est là que devrais être les test .

    Après si tu veux savoir les états de ta TabActivity, le mieux c'est d'enregistrer ces étapes dans la TabActivity , qui enregistrera les différents chemins de tes Activity Filles.
    Pour être plus clair, tu as une varaible state dans ta class TabActivity qui permet d'enregistrer das quel état tu te trouves, et lors du OnResume de tes Acitivy filles tu regardes où tu en es ?

    Il te suffit juste de garder un lien depuis ton Acitivity fille vers ta TabActivity.


    Je ne pense pas que cela soit un problème de conception. Il est parfois utile de rediriger l'utilisateur plûtot que simplement lui dire "aller la-bas". Effectivement, je suis arrivé à changer d'onglet grâce à une activité, mais quand je veux y revenir, je ne sais plus qui l'a appelé. Utilisé putExtra peut vite devenir lourd. Non ?
    Je suis un peu d'accord avec AndroChristophe , ce n'est pas au Activity appartenant à tes Onglets de gérer les changements . Si tu veux changer d'onglet alors tu dois appeler une fonction de ta TabActivity depuis tes Onglets qui permet de changer vers un nouvel onglet.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    En tout cas l'erreur provient bien de là. Il faut que tu lui passes le Context de ta TabActivity.
    Pourtant, que je lui passe this ou getParent(), rien à faire, même erreur :s
    C'est bien au niveau de l'adapter qu'il faut le faire (je vois pas ou ça pourrait être d'autre de toute façon) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayAdapter<String> myAdapter= new ArrayAdapter<String>(getParent(), android.R.layout.simple_spinner_item);
    Citation Envoyé par Feanorin Voir le message
    Lors d'un changement d'onglet tu auras toujours le OnResume et OnPause d'appeller , le OnPause de ton activity précédente , et le OnResume de ta nouvelle Activity.

    Donc c'est là que devrais être les test .

    Après si tu veux savoir les états de ta TabActivity, le mieux c'est d'enregistrer ces étapes dans la TabActivity , qui enregistrera les différents chemins de tes Activity Filles.
    Pour être plus clair, tu as une varaible state dans ta class TabActivity qui permet d'enregistrer das quel état tu te trouves, et lors du OnResume de tes Acitivy filles tu regardes où tu en es ?

    Il te suffit juste de garder un lien depuis ton Acitivity fille vers ta TabActivity.
    "tu as une variable state", tu veux dire que je dois en créer une, il n'y a pas pareil variable à ma disposition quelque part ? Je vois pas du tout ce que cette variable devra contenir, et surtout quel est son but (tu réponds à quelle question ?).

    L'état dans lequel je me trouve me permettant de savoir quelle activité est à lancer dans l'onglet, je le connais, y'a pas de soucis, j'ai pas besoin de me créer d'autre variable. Donc effectivement le onResume permet de résoudre une partie du problème, mais je ne sais pas comment changer le contenu proprement finalement. Je m'explique. Voici le contenu de l'activity d'un de mes onglets (extends TabGroupActivity) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
            @Override
    	public void onCreate(Bundle savedInstanceState){
     
    		super.onCreate(savedInstanceState);
     
    		if (condition){
    			startChildActivity("Activity1", new Intent(this, Activity1.class));
    		}
     
    		else{
    			startChildActivity("Activity2", new Intent(this, Activity2.class));
    		}
     
    	}
    Donc, dans le onResume, si je met le même code, l'ancienne childActivity du onCreate n'aura pas été supprimée, n'est ce pas ? Il faudrait "remplacer" l'ancienne, ou quelque chose m'échappe...
    De plus, comme je le disais, il peut arriver qu'après une action dans le même onglet, celui-ci est besoin de changer d'activity. L'onglet 1 à deux activités possible A et B. Quand A est lancé, une action sur l'onglet 1 peut nécessiter de lancer l'activité B (et éventuellement une action depuis d'autres onglets, mais c'est l'onglet 1 qui pause problème, car onResume n'est pas appelé).

    Citation Envoyé par Feanorin Voir le message
    Je suis un peu d'accord avec AndroChristophe , ce n'est pas au Activity appartenant à tes Onglets de gérer les changements . Si tu veux changer d'onglet alors tu dois appeler une fonction de ta TabActivity depuis tes Onglets qui permet de changer vers un nouvel onglet.
    Je n'ai pas compris ce que tu me conseillais de faire pour que cela soit plus propre. Pour l'instant je fais, dans l’activité fille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (MyTab1GroupActivity)getParent()).getTabHost().setCurrentTab(3);

  20. #20
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Pourtant, que je lui passe this ou getParent(), rien à faire, même erreur :s
    C'est bien au niveau de l'adapter qu'il faut le faire (je vois pas ou ça pourrait être d'autre de toute façon) ?
    C'est bien ce que je pensais aussi, enfin il faudrait creuser la dedans...
    Peut être il faudrait que tu places directement le context de ta tabActivity sans passer par getParent().
    Car ton spinner est dans une Acitivty descendant de ta TabActvity ou d'un groupe d'Activity ?


    "tu as une variable state", tu veux dire que je dois en créer une, il n'y a pas pareil variable à ma disposition quelque part ? Je vois pas du tout ce que cette variable devra contenir, et surtout quel est son but (tu réponds à quelle question ?).

    L'état dans lequel je me trouve me permettant de savoir quelle activité est à lancer dans l'onglet, je le connais, y'a pas de soucis, j'ai pas besoin de me créer d'autre variable. Donc effectivement le onResume permet de résoudre une partie du problème, mais je ne sais pas comment changer le contenu proprement finalement. Je m'explique. Voici le contenu de l'activity d'un de mes onglets (extends TabGroupActivity) :
    C'était juste un concept que je parlais non pas une variable state qui existe. je voulais juste t'expliquer que tu peux créer une variable dans le TabActivity te permettant de savoir où tu en es à partir de celle ci , puisque c'est elle qui relie toutes les Activity et qui permet de switcher entre les onglets.

    Après si tu penses ne pas en avoir besoin alors ne l'utilises pas . C'est juste pour centraliser ton état dans l'Activity Parente.


    Donc, dans le onResume, si je met le même code, l'ancienne childActivity du onCreate n'aura pas été supprimée, n'est ce pas ? Il faudrait "remplacer" l'ancienne, ou quelque chose m'échappe...
    De plus, comme je le disais, il peut arriver qu'après une action dans le même onglet, celui-ci est besoin de changer d'activity. L'onglet 1 à deux activités possible A et B. Quand A est lancé, une action sur l'onglet 1 peut nécessiter de lancer l'activité B (et éventuellement une action depuis d'autres onglets, mais c'est l'onglet 1 qui pause problème, car onResume n'est pas appelé).
    J'essaye de suivre je vais faire un schéma

    TabActivity

    Onglet1 Onglet2 Onglet3

    GroupAct0 Act3 Act4

    Act1 Act2


    En fait tu voudrais switcher entre l'Act1 et l'Act2 ?

    Est ce que c'est cela ?

    Je n'ai pas compris ce que tu me conseillais de faire pour que cela soit plus propre. Pour l'instant je fais, dans l’activité fille:
    Ca marche comme cela aussi . Je pensais à utiliser le même concept sauf qu'au lieu d'utiliser en plein milieu du code, tu crées une variable de ta TabActivity que tu sauvegardes dans l'Activity.

Discussions similaires

  1. bouton avec menu déroulant dans la tool bar.
    Par archerhawke dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/10/2009, 19h50
  2. [FLASH 8] Transition sur bouton de menu deroulant
    Par chienlou dans le forum Flash
    Réponses: 3
    Dernier message: 05/06/2006, 10h13
  3. Problème avec Goto pour un bouton de menu
    Par Klotian dans le forum Flash
    Réponses: 3
    Dernier message: 26/05/2006, 17h49
  4. Réponses: 3
    Dernier message: 13/06/2005, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo