onCreateOptionsMenu() не работает во фрагменте

#java #android #android-fragments

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

Вопрос:

Я пытаюсь реализовать фильтр поиска в моем фрагменте, но это мне не позволяет. Я использовал тот же код в Activity раньше, и это сработало. Всякий раз, когда я что-то печатаю, onCreateOptionsMenu() не вызывается. Приложение выглядит следующим образом: [![Изображение приложения][1]][1] Как вы можете видеть, я ввожу что-то вверху, и оно не будет отфильтровано.

Мой фрагмент кода: `

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View RootView = inflater.inflate(R.layout.fragment_tab1, container, false);
    if(getArguments() != null){
        String yourText = getArguments().getString("interessen");
        System.out.println(yourText);
    }`
  

.
.
.

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

    inflater.inflate(R.menu.menuevents, menu);
    super.onCreateOptionsMenu(menu, inflater);
    MenuItem searchitem = menu.findItem(R.id.searchEvent);
    //searchitem.setVisible(false);
    final SearchView searchView = (SearchView) searchitem.getActionView();
    final List<Event> allEvents = new ArrayList<>();
    allEvents.addAll(eventList);

    searchitem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            eventList.clear();
            eventList.addAll(allEvents);
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {

            eventList.clear();
            eventList.addAll(allEvents);
            return true;
        }
    });
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            eventListAdapter.getFilter().filter(newText);
            return false;
        }

    });
  

Я не копировал EventListAdapter , потому что это должно работать просто отлично. Просто фрагмент не получает доступа к searchItem.

Кто-нибудь? 🙂 [1]:https://i.stack.imgur.com/JkLcL.png

Ответ №1:

Вы вызвали setMenuVisibility() , что означает, что ваш фрагмент специально отказывается от отображения своего меню. Ожидается, что, когда ваше меню не отображается, onCreateOptionsMenu() не запускается.

Удалите эту строку кода, чтобы ваше меню действительно было видно.