2013-03-15 13 views
5

W mojej aplikacji mam jedną Aktywność zawierającą dwa Fragmenty. Jeśli dodaję MenuItem do Menu, czy mogę go odzyskać w moich fragmentach? Jaki jest związek między Option Menu w Activity i Option Menu w jego fragmentach potomnych?Android: Menu opcji między działaniem a fragmentami

+0

Jaki jest powód, dla którego chcesz pobrać element menu w fragmentach? Zwykle po prostu chcesz dodać do menu fragmenty i to tylko kwestia przesłonięcia OnCreateOptionsMenu w fragmentach i wywołanie setHasOptionsMenu (true) w ich metodzie onCreate –

Odpowiedz

5

Musisz zadzwonić pod numer setHasOptionsMenu(); z true jako argumentem przekazanym do niego, wtedy możesz zastąpić menu opcji UtwórzCreate.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Enable the option menu for the Fragment 
    setHasOptionsMenu(true); 
} 

Jeśli chcesz mieć inny optionsMenu dla każdego fragmentu można zdefiniować dwa różne menu Plik xml i napełnienie ich w onCreateOptionsMenu

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 

    inflater.inflate(R.menu.fragment1_menu, menu); 


} 
+2

Pokazuje 2 menu .. 1 z mojej aktywności i 1 w fragmencie. Czy wiesz, jak ukryć menu działań. które mam we wszystkich fragmentach. – djk

+2

Myślę, że nie powinieneś nadużywać menu w swojej Aktywności, aby tego uniknąć. –

+0

spróbuj ustawić menu.removeItem (R. id.parentMenuItem); w części, aby uniknąć powtórzenia –

0

I okazało się, że mogę dodać MenuItem w Działaniu onCreateOptionsMenu() i następnie pobrać je w Fragment s przez ich ID, tak:

aktywny:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    itemId= 0; 
    menu.add(0, itemId, 0, "item"); 
    return super.onCreateOptionsMenu(menu); 
} 

Fragment:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    itemId= 0 
    MenuItem menuItem= menu.findItem(itemId);       
} 
+1

Nie, nadal nie działa ... –

Powiązane problemy