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 avec Action bar et Drawer


Sujet :

Composants graphiques Android

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut Navigation avec Action bar et Drawer
    Bonjour à tous,

    j'essai de comprendre la façon de travailler en présence d'une ActionBar et d'une actionbar + navigation drawer.

    J'ai dans l'idée de faire une application avec comme point d'entrée une activity avec plusieurs icones menants vers différentes activity.

    Dans le cas où je travail uniquement avec une action bar , pas de problème particulier puisque chaque activity intègre automatiquement l'actionbar via le theme Holo. J'ai juste besoin de la personnaliser en fonction de l'activity.

    En revanche si je souhaite utiliser un Navigation drawer que je retrouve partout j'ai l'impression que je ne peux avoir qu'une activity et tout un tas de fragments.

    - Suis je dans le juste ?
    - Cela voudrais donc dire que mon activity devrait gérer tous les cas différents de l'action bar en terme de titre et de bouton action ?
    Ca me semble extrêmement fouillis dans le cas d'une application complexe (plusieurs 10 aines d'écran)
    - Des conseils pour gérer cela au mieux ?

    Pour finir dans la partie Design il parle de hierarchie de navigation via le navigation drawer mais si on ne fait que remplacer un fragment par un autre fragment comment gérer cette profondeur (et donc l'action du bouton retour) ?

    Merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Points : 421
    Points
    421
    Par défaut
    En revanche si je souhaite utiliser un Navigation drawer que je retrouve partout j'ai l'impression que je ne peux avoir qu'une activity et tout un tas de fragments.
    - Suis je dans le juste ?
    Effectivement le Navigation Drawer fait partie du layout de l'Activity, en changeant d'activité on supprime le Navigation Drawer. Il faudrait donc l'inclure dans chacunes des activity de l'application, ce qui n'est pas très optimisé. Il faut effectivement utiliser les fragments.
    Si tu tiens vraiment à ne pas utiliser de Fragments, une autre solution serait peut être de créer une classe Activity de base, (ex. BaseActivity), qui définit un layout contenant le Navigation Drawer ainsi qu'un FrameLayout. Ensuite on hérite de BaseActivity avec les autres activités de l'application, et on remplace le contenu du FrameLayout par le contenu de l'activité. Je n'ai jamais fait cela donc je ne peux pas assuré que cela fonctionne. Par contre les fragments sont une bonne pratique et mieux optimisés. D'ailleurs Google insiste bien là dessus.

    - Cela voudrais donc dire que mon activity devrait gérer tous les cas différents de l'action bar en terme de titre et de bouton action ?
    Ca me semble extrêmement fouillis dans le cas d'une application complexe (plusieurs 10 aines d'écran)
    Ceci n'est pas un problème, en fait ça simplifie même les choses, ou du moins ça les centralise. En effet tous les éléments du menu seront définis au même endroit, ensuit il faudra afficher/masquer les bons éléments correspondants au fragment affiché. Ceci peut se faire avec en surchargeant la fonction Activity::onPrepareOptionsMenu(). Exemple :

    menu.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:id="@+id/item1"        
            android:title="Menu 1"/>
     
        <item
            android:id="@+id/item2"
            android:title="Menu 2"/>    
    </menu>
    Activity:
    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
    16
    @Override
    	public boolean onPrepareOptionsMenu(Menu menu) {
    		MenuItem item1= menu.findItem(R.id.menuItem1);
    		MenuItem item2= menu.findItem(R.id.menuItem2);
                    //etc... 
     
    		if (displayMenu1) {
    			item1.setVisible(true);
                            item2.setVisible(false);                        
    		}
    		else {
    			item1.setVisible(false);
                            item2.setVisible(true);
    		}		
    		return super.onPrepareOptionsMenu(menu);
    	}
    Lorsque le menu doit être mis à jour, il suffit d'appelé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    invalidateOptionsMenu();
    pour que onPrepareOptionsMenu() soit appelé.

    Bien sûre je comprend que cela puisse devenir compliqué avec plusieurs dizaines de pages, si elles ont toutes un menu différent.

    Pour changer le titre sur l'action bar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTitle("Titre de la page");
    - Des conseils pour gérer cela au mieux ?
    - Le code sample de google (dispo sur le lien Navigation Drawer que tu mentionne) est un bon point de départ à mon avis.
    - Utiliser les fragments

    Pour finir dans la partie Design il parle de hierarchie de navigation via le navigation drawer mais si on ne fait que remplacer un fragment par un autre fragment comment gérer cette profondeur (et donc l'action du bouton retour) ?
    Je crois que tu peux gérer cela avec la fonction addToBackStack() de la classe FragmentTransaction. Mais je n'ai jamais testé. Je t'invite à lire ces quelques liens qui pourront peut être t'aider :
    FragmentTransaction.addToBackStack
    Providing Proper Back Navigation

    Bon courage

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d'une action bar avec l'utilisation des fragments
    Par sadok_fst1989 dans le forum Android
    Réponses: 3
    Dernier message: 15/06/2014, 01h06
  2. Limite du WebBrowser.Navigate avec un About:
    Par Bill14 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 30/03/2005, 12h41
  3. [W3C] CCS tabs, la navigation avec onglet.
    Par m@thieu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/01/2005, 17h39
  4. Navigation avec la touche TAB
    Par wishnight dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/10/2004, 10h02
  5. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54

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