В моем приложении у меня есть одно действие, в котором размещаются два фрагмента. Если я добавлю 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); }