Aller au contenu

[Résolu] Problème d'ID d'Item de menu sélectionné


Roromix

Recommended Posts

    public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater inflater = getMenuInflater();
       inflater.inflate(R.menu.menu, menu);
       return true;
   }

   public boolean onOptionsItemSelected(MenuItem item) {
       switch(item.getItemId()) {
       case [color=red][u]m_a_new[/u][/color]:
           Intent intent = new Intent(helloworld.this, world2.class);
           startActivity(intent);
           return true;
       }
       return false;
   }

Dans mon menu.xml j'ai un item avec l'ID m_a_new mais impossible de l'utiliser dans onOptionsItemSelected

Il me dit "m_a_new" cannot be resolved"

Pourtant il existe bien

Quelqu'un peut-il m'aider à résoudre ce problème ?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

est-tu familier avec les types de variables de Java?

Le switch case que tu fais doit se faire sur un entier, exemple:

switch(item.getItemId()) {
       case 1:
             System.out.println("vous avez appuyé sur le premier élément");
       case 2:
             System.out.println("vous avez appuyé sur le second élément");
       case 3:
             System.out.println("vous avez appuyé sur le troisième élément");
       default:
             System.out.println("vous avez appuyé sur un autre élément");

et toi, tu lui dit: case m_a_new: ce qui ne veut rien dire.

Limite, tu peux dire: "int m_a_new=1" juste avant, mais je ne sois pas certain que c'est ce que tu veux faire

essaye ceci pour mieux comprendre

    public boolean onOptionsItemSelected(MenuItem item) {
       system.out.println("vous avez appuyé sur l'élément: "+item.getId());
       return true;
   }

Lien vers le commentaire
Partager sur d’autres sites

Bah je suis l'exemple du Dev Guide Android:

Sauf que dans le dev guide le menu est généré dans le code lui même

/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {
   menu.add(0, MENU_NEW_GAME, 0, "New Game");
   menu.add(0, MENU_QUIT, 0, "Quit");
   return true;
}

/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
   case MENU_NEW_GAME:
       newGame();
       return true;
   case MENU_QUIT:
       quit();
       return true;
   }
   return false;
}

Donc bon

Lien vers le commentaire
Partager sur d’autres sites

je me repete donc:

* il faut d'abord lire un turorial Java et savoir ce qu'est une variable avant de se lancer tête baissée.

* mon code pour t'aider à comprendre reste toujours valable:

    public boolean onOptionsItemSelected(MenuItem item) {
       system.out.println("vous avez appuyé sur l'élément: "+item.getId());
       return true;
   }

* et un cadeau pour toi :P

http://www.androidsnippets.org/snippets/31/

public class TestProject extends Activity {  
   /* Set ID's */  
   private final int MENU_NEW_GAME = 0;  
   private final int MENU_QUIT = 1;  

   /* Create Menu Items */  
   public boolean onCreateOptionsMenu(Menu menu) {  
       menu.add(0, MENU_NEW_GAME, 0, "Help");  
       menu.add(0, MENU_QUIT, 0, "About");  
       return true;  
   }  

   /* Handles Item Selection */  
   public boolean onOptionsItemSelected(MenuItem item) {  
       switch (item.getItemId()) {  
           case MENU_NEW_GAME:  
               newGame();  
               return true;  

           case MENU_QUIT:  
               finish();  
               return true;  
       }  
       return false;  
   }  
} 

Lien vers le commentaire
Partager sur d’autres sites

ce sont des constantes définies précédemment dans la classe

Oui j'ai bien vu mais moi j'ai pas eu besoin de les prédéfinir étant donné que mon menu est un XML

Petit bout du XML:


L'ID n'est pas un entier

Et quand on fait item.getItemId(); ça me donne 2131165196

Du coup vaut mieux créé son menu direct via le code plutôt qu'en XML si on veux connaitre d'avance les ID (entier)

A moins que tu ai une meilleure solution ?

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...