Исключение NullpointerException при попытке добавить SearchView в мою активность appcompat

Я получаю исключение Nullpointerexception при попытке добавить SearchView в свою деятельность appcompat. Я уже прошел этот ответ, но не смог его решить.

Вот мой

menu_main.xml

  <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools">

        <item android:id="@+id/action_search"
            android:icon="@android:drawable/ic_menu_search"
            android:title="Search"
              android:iconifiedByDefault="false"
            app:showAsAction="always"
            app:actionViewClass="android.support.v7.widget.SearchView"/>

меню создания опций

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.menu_main, menu);

    mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
    mSearchView.setIconifiedByDefault(true);

Я также пробовал:

mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

Исключение "Получение ниже":

java.lang.NullPointerException: попытка вызвать виртуальный метод «void android.support.v7.widget.SearchView.setIconifiedByDefault (boolean)» для нулевой ссылки на объект


person varmashrivastava    schedule 03.06.2018    source источник
comment
вы тоже редактируете свой manifest.xml?   -  person Paraskevas Ntsounos    schedule 03.06.2018
comment
@ParaskevasNtsounos Я добавил <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter>   -  person varmashrivastava    schedule 03.06.2018
comment
проверьте этот stackoverflow.com/a/33400808/6176003   -  person Paraskevas Ntsounos    schedule 03.06.2018
comment
@ParaskevasNtsounos уже проверил .. я использовал только приложение: actionViewClass   -  person varmashrivastava    schedule 03.06.2018
comment
проверить мой ответ   -  person Paraskevas Ntsounos    schedule 04.06.2018


Ответы (2)


Попробуйте этот код:

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            getMenuInflater().inflate(R.menu.menu_main, menu);

            searchView = new SearchView(this.getSupportActionBar().getThemedContext());
            searchView.setSearchableInfo(searchManager.
                        getSearchableInfo(getComponentName()));

            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

             @Override
             public boolean onQueryTextSubmit(String query) {
                 // collapse the view ?
                 //menu.findItem(R.id.menu_search).collapseActionView();
                 Log.e("queryText",query);
                 return false;
             }

             @Override
             public boolean onQueryTextChange(String newText) {
                 // search goes here !!
                 // listAdapter.getFilter().filter(query);
                 Log.e("queryText",newText);
                return false;
             }


            });

        }
person Paraskevas Ntsounos    schedule 03.06.2018
comment
Это не сбой, но не получение обратных вызовов.. onQueryTextChange, searchClose - person varmashrivastava; 14.06.2018
comment
@varmashrivastava я обновляю свой код с помощью прослушивателя searchview, попробуйте и скажите, работает ли он - person Paraskevas Ntsounos; 18.06.2018

Попробуй это. Это работает

menu.xml

<item
    android:id="@+id/action_search"
    android:icon="@android:drawable/ic_menu_search"
    android:iconifiedByDefault="false"
    android:title="Search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always" />

Код Java:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.sol_menu, menu);
    MenuItem menuItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) menuItem.getActionView();
    searchView.setIconified(false);
    super.onCreateOptionsMenu(menu);
}
person Manoj Singh Rawal    schedule 05.06.2018
comment
у меня не работает .. java.lang.NullPointerException: попытка вызвать виртуальный метод 'void android.support.v7.widget.SearchView.setIconified(boolean)' для ссылки на нулевой объект - person varmashrivastava; 14.06.2018