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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    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 confirmé
    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
    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 émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    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 confirmé
    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
    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 confirmé
    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
    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

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