Attempt to invoke virtual method в SearchView в onCreateOptionsMenu

я новичок в Андроиде и это мой первый вопрос на Stack Overflow. Я использую SearchView в своем меню.

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);

        final MenuItem searchItem = menu.findItem(R.id.search);
        final SearchView searchView = (SearchView) searchItem.getActionView();
        searchView.setOnQueryTextListener(this);

        return true;
    }

При отладке появляется ошибка java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setOnQueryTextListener(android.widget.SearchView$OnQueryTextListener)' on a null object reference

Я понимаю, что эта ошибка возникает, потому что в searchView null и раньше я справлялся с подобными ошибками, но сейчас я не понимаю, что с этим делать.

main_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/search"
        android:title="@string/search"
        app:showAsAction="always"
        android:icon="@drawable/search_icon"
        />
</menu>

Ответы (1 шт):

Автор решения: ЮрийСПб

Согласно документации, если вы хотите использовать не стандартную вьюху для элемента меню вам надо явно указать какой класс должен быть использован для отрисовывания меню. Т.е. вам надо добавить:

android:actionViewClass="android.widget.SearchView"

в разметку вашего меню, в нужный элемент.

→ Ссылка