Nullpointerexception при попытке добавить SearchView к моей активности appcompat - PullRequest
0 голосов
/ 03 июня 2018

Я получаю 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"/>

onCreateOptionsMenu

 @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)' для нулевого объектассылка

Ответы [ 2 ]

0 голосов
/ 05 июня 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);
}
0 голосов
/ 03 июня 2018

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

    @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;
             }


            });

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...