2014-11-12 12 views
5

ho il mio menuItem sulla mia res/menu/File student_marks.xml:Come ottenere un MenuItem da id

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context=".StudentMarks" > 
    <item android:id="@+id/action_selected_year" 
     android:title="@string/action_selected_year" 
     android:showAsAction="withText|ifRoom" 
     style="@style/AppTheme" /> 
</menu> 

Ora ho bisogno per questo articolo per impostare una title.in una parte specifica della mia app .

posso lavorare con un elemento specifico in questo metodo:

onOptionsItemSelected(MenuItem item) 

il problema è che ho bisogno della voce 'action_selected_year' senza di questo metodo, ma in un'altra parte del mio programma.
Non ho idea di come ottenerlo.

risposta

7
Menu optionsMenu; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     // store the menu to var when creating options menu 
     optionsMenu = menu; 
    } 

esempio: cambiare l'icona sulla prima menuItem (! OptionsMenu dovrebbe essere = null)

optionsMenu.getItem(0).setIcon(getResources() 
    .getDrawable(R.drawable.ic_action_green)); 
+0

perfetto, salvo il riferimento del menu all'interno della variabile di attività, permettimi un controllo perfetto sull'oggetto del menu. Grazie. –

+3

Ciò non ottiene la voce di menu per ID. Ciò restituisce semplicemente la prima voce di menu. – AndroidDev

+3

Puoi chiamare findItem() e passare l'id che stai cercando, invece di chiamare getItem (0). –

1
Menu optionsMenu; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    // store the menu to var when creating options menu 
    optionsMenu = menu; 
} 

E per ottenere una voce di menu:

MenuItem item = optionsMenu.findItem(R.id. action_selected_year); 
Problemi correlati