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

Android Discussion :

ActionBar dynamique


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 149
    Points : 109
    Points
    109
    Par défaut ActionBar dynamique
    Bonjour,
    j'ai un petit problème avec mon action bar.
    j'ai une FragmentActivity qui contient une actionbar et une barre de navigation avec des onglets, ce que je voudrais c'est que quand un des fragment et sélectionné certaine icone apparaisse dans l'actionBar.
    donc j'ai créé un booléen pour chaque fragment et a chaque clique sur un onglet
    invalide le "optionsMenu" pour le remettre a zéro, et dans le "onCreateOptionsMenu" suivant le booléen qui est vrai je crée les icone dont j'ai besoin.
    Mais ça ne marche pas
    c'est comme si quand je click sur un onglet ça mais les booléen comme il faut mais ça ne change pas le menu et quand je clique sur un autre onglet ça me crée le menu précédent
    j’espère que c'est assez clair.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Bonjour,

    Pour que l'on puisse t'aider le plus efficacement possible, il serait sympa de nous montrer ton code.
    Par là j'entends la partie du onPrepareOptionMenu ainsi que les endroits où est appelé la méthode invalidateOptionMenu.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 149
    Points : 109
    Points
    109
    Par défaut
    ducoup j'ai éssayé d'ajouter un menu.clear au debut du onCreateOptionsMenu mais c'est pas mieux
    oncreate option menu:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    		menu.clear();
    		if (tracking){
    			//tracking
    		}
    		else if (badge){
    			Log.i("option menu", "badge");
    			menu.add("Help").setIcon(R.drawable.interrogation_petit).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    		}
    		else if (station){
    			Log.i("option menu", "station");
    			//Create the search view
    	        SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
    	        searchView.setQueryHint("rechercher");
     
    	        menu.add("Search")
    	            .setIcon(R.drawable.recherche_petit)
    	            .setActionView(searchView)
    	            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
    		}
            else if (activite){
            	// activite
            }
     
    		tracking = false;
    		badge = false;
    		activite = false;
    		station = false;
            return super.onCreateOptionsMenu(menu);
        }
    et le tabListener
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    	private class MyTabListener implements ActionBar.TabListener{
     
    		public void onTabSelected(Tab tab, FragmentTransaction ft) {
    			Log.i("tab selected", "passé");
    			invalidateOptionsMenu();
    			switch (tab.getPosition()) {
    			case 0:
    				TrackingStartActivity SFrag = new TrackingStartActivity();
    				ft.replace(android.R.id.content, SFrag);
    				tracking = true;
    				badge = false;
    				activite = false;
    				station = false;
    				break;
    			case 1:
    				badge = true;
    				tracking = false;
    				activite = false;
    				station = false;
    				BadgeMainFragment bFrag = new BadgeMainFragment();
    				ft.replace(android.R.id.content, bFrag);
     
    				break;
    			case 2:
    				//TODO start activité
    				activite = true;
    				tracking = false;
    				badge = false;
    				station = false;
    				break;
    			case 3:
    				//TODO start station
    				station = true;
    				tracking = false;
    				badge = false;
    				activite = false;
     
    				break;
    			default:
    				break;
    			}
     
    		}
     
    		public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    			//invalidateOptionsMenu();
     
    		}
     
    		public void onTabReselected(Tab tab, FragmentTransaction ft) {
    			Log.i("tab reselected", "passé");
     
    		}
     
    	}

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Je pense que tu confonds onCreateOptionMenu et onPrepareOptionMenu.
    Le premier n'est appelé qu'une seule fois lors de la création de l'Activity, alors que le deuxième sera appelé à chaque fois que tu demandera de rafraîchir le menu.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 149
    Points : 109
    Points
    109
    Par défaut
    donc il faudrais que je crée toutes mes "options" dans le onCreate et que je les affiche seulement dans le onPrepare?

    par contre après test il passe bien dans les 2 a chaque clique sur les onglets

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 149
    Points : 109
    Points
    109
    Par défaut
    bon j'ai éssayé mais ça ne marche pas mieux il passe bien dans le oncreate et dans le onpreare a chaques fois mais il affiche l'item qu'au clique d'après

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    As-tu ajouté l'appel à "setHasOptions(true);" dans ton Activity ?

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 149
    Points : 109
    Points
    109
    Par défaut
    non mais sur quoi je le rajoute?

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 149
    Points : 109
    Points
    109
    Par défaut
    enfaite je faisait tous dans la fragment activity pas dans les fragment car je peu pas créer un menu depuis le fragment

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Regarde ce tutoriel fait par Google pour utiliser des menu depuis les Fragments : http://developer.android.com/guide/c...html#ActionBar

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 149
    Points : 109
    Points
    109
    Par défaut
    d'accord je vais regarder merci pour ton aide

  12. #12
    Expert éminent

    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
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Tu dois indiquer au frament qu'il peut prendre la main sur l'actionBar, via l'appel de cette fonction setHasOptionsMenu.

    Cet appel se fait dans le onCreate du Fragment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setHasOptionsMenu(true);
    setHasOptionsMenu(boolean hasMenu)
    Report that this fragment would like to participate in populating the options menu by receiving a call to onCreateOptionsMenu(Menu, MenuInflater) and related methods.
    Ne pas oublier également de bien remonter le menu depuis le onCreateOption avec son inflater .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @Override
        public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
                 // add menu
                 super.onCreateOptionsMenu(menu, inflater);
        }
    Pour le onPrepareOptionMenu ne sers qu'à mettre à jour ton menu que si celui ci est créer. Ne pas oublier qu'à chaque affiche de ton fragment lors de son initialisation le menu est recréer. Du coup tu passeras par les deux méhodes. Le onPrepareOptionMenu est intéressant du coup pour l'affichage du menu et non l'affichage de l'actionBar qui sera affiché elle qu'une seule fois normalement.

Discussions similaires

  1. Creation de fiche dynamique
    Par Mouss26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 07h56
  2. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50
  3. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36
  4. Réponses: 4
    Dernier message: 13/05/2002, 16h43
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

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