Search code examples
androidandroid-fragmentsnavigation-drawersearchview

Implementing SearchView in Toolbar with Fragments


CURRENT SCENARIO

My app home page consists of navigation drawer, therefore I am having views loaded as fragments. I also have search icon in toolbar. I implemented it in menu.xml. Next step I implemented SearchView for search icon by following answer on this question Implementing search in Toolbar.

This is working fine as search view shows and can also be dismissed.

PROBLEM

I can implement search query for the search view but I cannot understand how to proceed. Problem is that onCreateOptionsMenu is in Activity and all code for search view is in the Activity. What I don't understand is data that has to be searched is in Fragment that is loaded in Activity class. I will hit another webservice to get the search result but how would I inflate searched data in Fragment again. I can't understand how to proceed in this situation.


Solution

  • Put this in your fragment

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        setHasOptionsMenu(true);
    }
    

    And you can get the SearchView like follows

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        MenuItem mSearchMenuItem = menu.findItem(R.id.mi_search);
        SearchView searchView = (SearchView) mSearchMenuItem.getActionView();
    }