Aman Gupta -  ΔMΔN
Aman Gupta - ΔMΔN

Reputation: 3007

Giving error on my searchbar after extending AppCompatActivity

After extending AppCompatActivity instead of Activity, my project is giving the following error:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference

and I followed this link[ this][1] but it did not work for me.

Please give me some suggestions on what I am doing wrong.

This is my code for search:

 SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

and this is menu xml

  <item
    android:id="@+id/search"
    android:app:actionViewClass="android.widget.SearchView"
    android:icon="@drawable/ic_search"
    android:app:showAsAction="collapseActionView|always"
    android:title="@string/Search"/>

Upvotes: 1

Views: 251

Answers (2)

Arslan Ashraf
Arslan Ashraf

Reputation: 867

You have to change actionview class of searchview to support and change schema in menu. like this

<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="Search"
    android:titleCondensed="false"
    android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
    android:orderInCategory="0"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

Then in the code you have to get the searchview and use expand listent like this. Remember to use SearchView of support library.

    mSearchView = (SearchView) MenuItemCompat.getActionView(mSearchItem);
    mSearchView.setQueryHint(mContext.getString(R.string.search_messages));
    mSearchView.setIconifiedByDefault(true);
    mSearchView.setOnQueryTextListener(this);
    MenuItemCompat.setOnActionExpandListener(mSearchItem, new      MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {

            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {

            }
            return true;
        }
    });

Upvotes: 1

user5400869
user5400869

Reputation:

Try using the custom app namespace for your actionViewClass too:

app:actionViewClass="android.support.v7.widget.SearchView"/>

Upvotes: 1

Related Questions