Android: OptionMenu между активностью и фрагментами

В моем приложении у меня есть одно действие, в котором размещаются два фрагмента. Если я добавлю MenuItem в меню, могу ли я извлечь его в своих фрагментах? Какова связь между OptionMenu в Activity и OptionMenu в его дочерних фрагментах?

Вы должны вызвать setHasOptionsMenu(); С true как переданный ему аргумент, вы можете переопределить меню опций CreateCreate.

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Enable the option menu for the Fragment setHasOptionsMenu(true); } 

Если вы хотите иметь разные параметрыMenu для каждого фрагмента, вы определите два разных файла xml-файла и onCreateOptionsMenu их в onCreateOptionsMenu

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

Вы не можете поймать событие меню активности в подфрагментах. Вместо этого вы можете использовать свои фрагменты как MenuItem.OnMenuItemClickListener . И в onOptionsItemSelected(MenuItem item) вашей активности вы просто вызываете YourFragment . onMenuItemClick() .

Я узнал, что я могу добавить MenuItem в Activity onCreateOptionsMenu() а затем вернуть их в Fragment s по их идентификатору, например:

Мероприятия:

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

Фрагмент:

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