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"
в разметку вашего меню, в нужный элемент.