Меню раздувает вызовы несколько раз при фрагменте onCreateOptionsMenu
Я использую фрагменты, и когда я переключаюсь на вложенный фрагмент, который реализует public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
, мое меню раздувает количество раз, когда я добираюсь до этого вложенного фрагмента. Как я могу избежать этого? Я также реализую конструктор Fragment с помощью методов:
setRetainInstance(true);
setHasOptionsMenu(true);
Когда я попытался реализовать решение siple как:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Add your menu entries here
if(!isInflated)
{
inflater.inflate(R.menu.contacts_archive_menu, menu);
isInflated = true;
}
super.onCreateOptionsMenu(menu, inflater);
}
но мое меню не было надуто после вращения экрана.
Ответы
Ответ 1
Я решил это просто, очистив меню до его флексирования:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.call_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
Ответ 2
Просто проверьте количество элементов menu
. Значение menu.size()==0
, нет элементов menu
, затем надувается с помощью layout menu
, иначе не раздувайте вообще.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (menu.size() == 0)
inflater.inflate(R.menu.call_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
Ответ 3
Используйте перед заменой.
фрагмент = новый EditMyProfile(); android.support.v4.app.FragmentTransaction fragmentTransactionEditProfile =. GetSupportFragmentManager() BeginTransaction(); getSupportFragmentManager(). popBackStack (null, FragmentManager.POP_BACK_STACK_INCLUSIVE); fragmentTransactionEditProfile.replace(R.id.frame, фрагмент); fragmentTransactionEditProfile.commit();