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 :

Navigation entre les onglets (TabHost)


Sujet :

Composants graphiques Android

  1. #1
    Membre confirmé Avatar de JQueen
    Inscrit en
    Octobre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2008
    Messages : 214
    Par défaut Navigation entre les onglets (TabHost)
    Bonjour à tous,

    je travaille actuellement sur application Android contenant 4 onglets (tab1, tab2, tab3 et tab4).
    L'activité principale de l'application est la classe Main.java qui hérite de la classe Activity. Son layout est défini grâce au fichier main.xml qui a la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    < LinearLayout>
          <TabHost>
                 <TabWidget/>
                 <FrameLayout>
                       <LinearLayout> </LinearLayout>
                       <LinearLayout> </LinearLayout>
                       <LinearLayout> </LinearLayout>
                       <LinearLayout> </LinearLayout>
                 </FrameLayout>
          </TabHost>
    </LinearLayout>
    Chaque LinearLayout, défini dans le FrameLayout, définit le contenu d'un onglet (c.à.d les vues qu'il inclut).

    La classe Main.java contient un bouton "Go" qui permet de lancer d'autre Activités.
    Mon problème donc consiste en ce qui suit : Quand je suis sur l'une des sous-activités lancées en appuyant sur le bouton "Go" , et que celle-ci aussi contient un autre bouton "Créer". Si je veux aller à un autre onglet en appuyant sur le bouton "Créer", comment je fais ?

    J'espère être bien claire, merci d'avance pour votre aide.

  2. #2
    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
    La classe Main.java contient un bouton "Go" qui permet de lancer d'autre Activités.
    Mon problème donc consiste en ce qui suit : Quand je suis sur l'une des sous-activités lancées en appuyant sur le bouton "Go" , et que celle-ci aussi contient un autre bouton "Créer". Si je veux aller à un autre onglet en appuyant sur le bouton "Créer", comment je fais ?
    Normalement avec le GetParent() ou getParentActivityIntent() (je pense le second) depuis ta 'Sous-Activity', tu devrais pouvoir appeler une fonction de ta TabActivity ou Fragment pour pouvoir switcher d'onglet avec un SetCurrentTab().

    public Intent getParentActivityIntent ()

  3. #3
    Membre confirmé Avatar de JQueen
    Inscrit en
    Octobre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2008
    Messages : 214
    Par défaut
    Bonsoir,

    Normalement avec le GetParent() ou getParentActivityIntent() (je pense le second) (). depuis ta 'Sous-Activity', tu devrais pouvoir appeler une fonction de ta TabActivity ou Fragment pour pouvoir switcher d'onglet avec un SetCurrentTab
    Merci pour ta réponse
    Mais je me suis dite, avant de me lancer à faire des recherches sur cette méthode et la développer, il devrais mieux s'informer sur quelques points :
    1- Ma classe principale Main.java hérite de Activity et non pas de TavActivity, est-ce que ça complique les choses ?
    2- c'est quoi la classe Fragment ?

    Merci

  4. #4
    Membre confirmé Avatar de JQueen
    Inscrit en
    Octobre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2008
    Messages : 214
    Par défaut
    Salut,
    j'ai fait des recherches sur la méthode getParentActivityIntent() mais j'ai pas trouvé de documentation. Pouvez-vous me fournir des liens sur cette méthode?
    Merci

  5. #5
    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
    Désolé du retard j'avais zappé :/


    Mais je me suis dite, avant de me lancer à faire des recherches sur cette méthode et la développer, il devrais mieux s'informer sur quelques points :
    1- Ma classe principale Main.java hérite de Activity et non pas de TavActivity, est-ce que ça complique les choses ?
    2- c'est quoi la classe Fragment ?


    Je te conseille de regarder l'exemple que tu trouveras à cette page
    http://developer.android.com/referen...bActivity.html

    Il est conseillé d'après Google de ne plus utiliser la TabActivity mais FragmentActivity !

    Si ta classe 'Mère' de tes Actvity 'fille' qui sont contenu dans les onglets n'est pas une TabAtcivity ou une Fragment alors tu auras un souci . Ca peut pas marcher. .

    c'est quoi la classe Fragment ?
    http://developer.android.com/referen...tActivity.html

    Ces fragments existent depuis la 3.0 (Tablette) et permettent de pouvoir gérer plusieurs UI.


    j'ai fait des recherches sur la méthode getParentActivityIntent() mais j'ai pas trouvé de documentation. Pouvez-vous me fournir des liens sur cette méthode?
    Yep ici :
    http://developer.android.com/referen...tivityIntent()

  6. #6
    Membre confirmé Avatar de JQueen
    Inscrit en
    Octobre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2008
    Messages : 214
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Il est conseillé d'après Google de ne plus utiliser la TabActivity mais FragmentActivity !
    La classe FragmentActivity existe depuis la version 4. Moi je travaille sous la version 3 d'android, donc je ne peus pas l'utiliser. Est-ce mon utilisation de la classe TabActivity va me causer des problèmes ?

  7. #7
    Membre confirmé Avatar de JQueen
    Inscrit en
    Octobre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2008
    Messages : 214
    Par défaut
    Autre question :
    Si ta classe 'Mère' de tes Actvity 'fille' qui sont contenu dans les onglets n'est pas une TabAtcivity ou une Fragment alors tu auras un souci . Ca peut pas marcher.
    Les méthodes setCurrentTab() et getParentActivityIntent() sont de la classe Activity donc pourquoi ca risque de ne pas marcher ?!!!

  8. #8
    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
    La classe FragmentActivity existe depuis la version 4. Moi je travaille sous la version 3 d'android, donc je ne peus pas l'utiliser. Est-ce mon utilisation de la classe TabActivity va me causer des problèmes ?
    Comme il est indiqué dans la documentation
    This class is deprecated.
    New applications should use Fragments instead of this class; to continue to run on older devices, you can use the v4 support library which provides a version of the Fragment API that is compatible down to DONUT.
    La Donut est la version 1.6 . C'est une librairie de support qui est compatible avec la SDK 4.0 soit la 1.6.

    Les méthodes setCurrentTab() et getParentActivityIntent() sont de la classe Activity donc pourquoi ca risque de ne pas marcher ?!!!
    C'est pas c'est méthode qui ne risque de ne pas marcher. C'est la Navigation elle même si tu ne passe pas par une TabActivity ou Fragment !

    Si tu essayes de contrôler tes Activity depuis une autre Activity alors tu auras un déroulement des tes Activity comme d'habitude, mais pas ce que tu souhaites obtenir quand tu parles d'Onglets.
    Pour cela il faut utiliser soit la TabActivity soit FragmentActivity.
    Voici à quoi cela ressemble les onglets :


    Tu as un exemple normalement dans la SDK dans le répértoire tutoriels sur les TabActivity.

  9. #9
    Membre confirmé Avatar de JQueen
    Inscrit en
    Octobre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2008
    Messages : 214
    Par défaut
    Salut,

    je sais à quoi ça ressemble les onglets, mais comme je suis débutante en Android, il y a plusieurs notions que je ne comprend pas encore

    Merci pour ton aide, je vais essayer d'implémenter le code qui me permettra de naviguer entre les onglets et je te tiendrai au courant

  10. #10
    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
    je sais à quoi ça ressemble les onglets,
    Je sais bien, je voulais juste te montrer le rendu des onglets depuis une TabActivity.

    Merci pour ton aide, je vais essayer d'implémenter le code qui me permettra de naviguer entre les onglets et je te tiendrai au courant
    N'hésites pas

  11. #11
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Normalement avec le GetParent() ou getParentActivityIntent() (je pense le second) depuis ta 'Sous-Activity', tu devrais pouvoir appeler une fonction de ta TabActivity ou Fragment pour pouvoir switcher d'onglet avec un SetCurrentTab().

    public Intent getParentActivityIntent ()
    Attention que GetParentActivityIntent est une API de level 16, donc si tu veux que ton application soit supportée par Android 2.2 par exemple, ça ne fonctionnera pas, c'est trop récent.

    Idem pour les Fragments.

  12. #12
    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
    GetParentActivityIntent est une API de level 16,
    J'avais pas fait attention :/

    Du coup alors utilises juste la fonction
    http://developer.android.com/referen...etParent%28%29

  13. #13
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    J'avais pas fait attention :/

    Du coup alors utilises juste la fonction
    http://developer.android.com/referen...etParent%28%29
    Pareil

  14. #14
    Membre confirmé Avatar de JQueen
    Inscrit en
    Octobre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2008
    Messages : 214
    Par défaut

    Envoyé par Feanorin
    J'avais pas fait attention :/

    Du coup alors utilises juste la fonction
    Code :Sélectionner tout - Visualiser dans une fenêtre à part
    getParent ()
    http://developer.android.com/referen...etParent%28%29
    Pareil
    Donc, comment faire ? autres pistes ? autres méthodes ?

  15. #15
    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
    Donc, comment faire ? autres pistes ? autres méthodes ?
    Utilise le GetParent(), récupère l'activity

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TaMainActivity act = (TaMainActivity)this.GetParent();
    if(act != null) {
       act.SwitchTab(newTab); // fonction que tu aura créée dans ta Main (TabActivity ou Fragment).
    } else {
     // activity non existante
    }

Discussions similaires

  1. Navigation entre les onglets
    Par maserati dans le forum JSF
    Réponses: 11
    Dernier message: 09/03/2012, 16h04
  2. navigation entre les balise div
    Par speedylol dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/11/2006, 15h36
  3. Réponses: 1
    Dernier message: 04/06/2006, 00h18
  4. [CR 10] navigation entre les enregistrements
    Par nannous dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 30/05/2006, 14h53
  5. [VB6]navigation entre les enregistrements
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/05/2006, 01h16

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