Search code examples
javaandroidsearchviewandroid-optionsmenu

SearchView not showing any results in Text Change Listener or Text Submit


I am trying to implement a SearchView in OptionsMenu of a Fragment. The onQueryTextChange and onQueryTextSubmit is not working. I am not sure where am I going wrong.

The menu file:

<?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/profile"
        android:orderInCategory="10"
        android:title="Profile"
        app:showAsAction="never">
    </item>
    <item
        android:id="@+id/settings"
        android:orderInCategory="11"
        android:title="Settings"
        app:showAsAction="never">
    </item>
    <item
        android:id="@+id/action_search"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="always|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:title="Search"/>
</menu>

The part in fragment where I am trying to access the text from SearchView:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.browse_story_fragment, menu);

        MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
        searchView = (SearchView) myActionMenuItem.getActionView();

        SearchView.OnQueryTextListener listener = new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextChange(String query) {
                query = query.toLowerCase();

                Log.e("queryText",query);

                return false;

            }
            public boolean onQueryTextSubmit(String query) {
                Log.e("queryTextSubmit", query);
                return false;
            }
        };

        super.onCreateOptionsMenu(menu, inflater);
    }

I do not see anything in the Logs. Where am I going wrong?


Solution

  • My big mistake! What I was thinking!

    Here is the code:

    @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            inflater.inflate(R.menu.browse_story_fragment, menu);
    
            MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
            searchView = (SearchView) myActionMenuItem.getActionView();
    
            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;
                }
    
    
        });
            super.onCreateOptionsMenu(menu, inflater);
        }