Saber Solooki
Saber Solooki

Reputation: 1220

submit a query when click on search button in keyboard

I have search view in my fragment. when I click on it , keyboard is open and I can type text. I want when I click on search button in keyboard , my query send to my server and get result but I don't know how get search event. any solution?enter image description here

Upvotes: 6

Views: 6996

Answers (4)

Rody Davis
Rody Davis

Reputation: 1995

You have to add new OnQueryTextListener, and implement onQueryTextSubmit. This also works in a fragment.

Example:

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

    SearchView sv = (SearchView) menu.findItem(R.id.action_search).getActionView();
    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            //Do something here
            Toast.makeText(getActivity(), "Search: " + query, Toast.LENGTH_SHORT ).show();
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });

    super.onCreateOptionsMenu(menu,inflater);
}

Upvotes: 0

Bhunnu Baba
Bhunnu Baba

Reputation: 1802

You can also apply setOnKeyListener on search view like as below:

searchview.setOnKeyListener(new View.OnKeyListener(
{
   Public boolean onKey(View v, int keyCode, KeyEvent event)
     {
        if(event.getAction() == KeyEvent.ACTION_DOWN)
        {
            switch(keyCode)
            {
                 Case KeyEvent.KECODE_ENTER:
                       // Apply action which you want on search key press on keypad
                        return true;
                 default:
                       break;
             }
          } return false;
       }
 });

Upvotes: 0

Vahid.Ahani
Vahid.Ahani

Reputation: 124

Pozzo Apps Answer is right

but for api below 11 and compat library you can use something like this :

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

Upvotes: 0

Pozzo Apps
Pozzo Apps

Reputation: 1857

You have to extend OnQueryTextListener, attach the listener and implement onQueryTextSubmit.

Example:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    searchView = (SearchView) menu.findItem(R.id.mActionSearch).getActionView();
    searchView.setOnQueryTextListener(this);

    return true;
}   

@Override
public boolean onQueryTextSubmit(String query) {
    //Do something here
    return false;
}

@Override
public boolean onQueryTextChange(String newText) {
    return false;
}

Upvotes: 10

Related Questions