1

I am getting Nullpointerexception when trying to add SearchView to my appcompat activity.I have already gone through this answer but couldn't resolve it.

Here is my

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);

I also tried:

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

Getting Below exception:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setIconifiedByDefault(boolean)' on a null object reference

Paraskevas Ntsounos
  • 1,755
  • 2
  • 18
  • 34
varmashrivastava
  • 432
  • 2
  • 6
  • 21

2 Answers2

1

Try this code:

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


            });

        }
Paraskevas Ntsounos
  • 1,755
  • 2
  • 18
  • 34
0

Try this. It is Working

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 Code:

 @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);
}
  • not working for me.. java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setIconified(boolean)' on a null object reference – varmashrivastava Jun 14 '18 at 16:17