2012-01-31 7 views
6

Ho una funzione onclick per il mio menu ma non riesco a capire quale sia l'ID per il mio sottomenu in modo da poter dire al sottomenu cosa fare quando l'utente fa clic su di esso. Ho creato il mio sottomenu al livello di programmazione usando il codice qui sotto. Quindi, se qualcuno potesse spiegarmi come so qual è l'ID per ogni elemento del sottomenu, lo apprezzerei molto.Aggiunta di un clic su un sottomenu?

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mainmenu, menu); 

    SubMenu submenu = menu.addSubMenu(0, Menu.FIRST, Menu.NONE, "Preferences"); 
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 5 Packets"); 
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 10 Packets"); 
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 20 Packets"); 
    inflater.inflate(R.menu.mainmenu, submenu); 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    switch (item.getItemId()) 
    { 
     case R.id.viewKML: 
      viewKML(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

risposta

10

Quando si aggiunge

submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 5 Packets"); 

La disposizione dei parametri per add() metodo è Android Menu Add Method

public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title) 

itemid ID elemento univoco. Usa NONE se non hai bisogno di un ID univoco.

È l'ID della voce di menu. Dovrebbe essere unico. Come dici tu 15,20,21. Questo ID si comporterà come android:id="@+id/15". Viene saranno utilizzati quando si sta per verificare quale elemento viene cliccato

es

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main_activity_menu, menu); 

     SubMenu submenu = menu.addSubMenu(0, Menu.FIRST, Menu.NONE, "Preferences"); 
     submenu.add(0, 10, Menu.NONE, "Get Last 5 Packets"); 
     submenu.add(0, 15, Menu.NONE, "Get Last 10 Packets"); 
     submenu.add(0, 20, Menu.NONE, "Get Last 20 Packets"); 
     inflater.inflate(R.menu.main_activity_menu, submenu); 

     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
     case 10: 
      Toast.makeText(LoginPageActivity.this, "Now "+item.getItemId(), Toast.LENGTH_SHORT).show(); 
      return true; 
     case 15: 
      Toast.makeText(LoginPageActivity.this, "Now = "+item.getItemId(), Toast.LENGTH_SHORT).show(); 
      return true; 
     case 20: 
      Toast.makeText(LoginPageActivity.this, "Now == "+item.getItemId(), Toast.LENGTH_SHORT).show(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 
+0

ha funzionato perfettamente. Grazie @Arslan. Trovato questo dopo una lunga ricerca. – Diffy

+0

Puoi aiutarmi a cambiare il colore degli elementi del sottomenu? Ho cercato il codice dell'ABS ma non ho potuto ottenerlo. @RandomlyKnighted? – Diffy