2014-11-12 14 views
5

mam MENUITEM na moim RES/menu/pliku student_marks.xml:Jak zdobyć MenuItem przez 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> 

teraz muszę do tej pozycji, aby ustawić title.in określonej części mojego app .

mogę pracować z konkretnym elementem w tej metodzie:

onOptionsItemSelected(MenuItem item) 

problemem jest to, że muszę pozycję „action_selected_year” bez tej metody, ale w innej części mojego programu.
Nie mam pojęcia, jak go zdobyć.

Odpowiedz

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; 
    } 

przykład: zmiana ikon na pierwszym MENUITEM (! OptionsMenu powinny być = null)

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

Perfect, zapisać odwołanie z menu wewnątrz zmiennej aktywności, pozwól mi uzyskać doskonałą kontrolę nad obiektem menu. Dziękuję Ci. –

+3

To nie daje pozycji menu według ID. To po prostu zwraca pierwszą pozycję menu. – AndroidDev

+3

Możesz wywołać findItem() i podać id, którego szukasz, zamiast wywoływać 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; 
} 

i uzyskać pozycję menu:

MenuItem item = optionsMenu.findItem(R.id. action_selected_year); 
Powiązane problemy