Попытка скрыть / отключить все меню (переполнение) во фрагменте

#android #android-fragments #menu #android-menu

#Android #android-фрагменты #меню #android-menu

Вопрос:

Я безуспешно пытался скрыть или отключить overflow menu в одном fragment .

Я пробовал настраивать setHasOptionsMenu(false) без успеха, а затем я попробовал setHasOptionsMenu(true) и попытался увеличить с помощью пустого меню, как показано ниже.

Обе попытки у меня не работают.

Как мне скрыть или отключить меню опций / переполнения только в одном фрагменте??

Заранее спасибо!

Фрагмент

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

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // Inflate the menu; this adds items to the action bar if it is present.
    inflater.inflate(R.menu.empty, menu);
    super.onCreateOptionsMenu(menu, inflater);
}
  

Комментарии:

1. Вы путаете фрагмент с активностью?

2. @PozzoApps нет. Я хочу изменить меню опций только в определенном фрагменте. Я понял, как это сделать, спасибо!

Ответ №1:

Выяснил, как это сделать. Просто нужно установить пункты меню, которые я не хочу видеть. В моем случае я сделал все из них невидимыми, и это полностью удалило меню переполнения.

Также не забывайте, что вы должны setHasOptionsMenu(true) в вашем onCreate , чтобы он знал, что нужно вызвать onCreateOptionsMenu

 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    if (menu != null) {
        menu.findItem(R.id.menu_settings).setVisible(false);
        menu.findItem(R.id.menu_leave_feedback).setVisible(false);
        menu.findItem(R.id.menu_shop).setVisible(false);
    }
}
  

Ответ №2:

Я знаю, что этот ответ очень запоздал, но мне нравится им делиться.
В методе Fragment onCreate:

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

        setHasOptionsMenu(true);

    }
  

И в методе Fragment onCreateOptionsMenu():

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

        menu.clear();
    }
  

Ответ №3:

  setHasOptionsMenu(true)
  

в onCreate() и

  @Override
        public void onPrepareOptionsMenu(Menu menu) {
            // if nav drawer is opened, hide the action items       
                menu.findItem(R.id.xxx).setVisible(false);
                menu.findItem(R.id.yyy).setVisible(false);              
        }