Ho una vista di ricerca nel mio frammento. quando clicco su di esso, la tastiera è aperta e posso digitare testo. Voglio quando faccio clic sul pulsante di ricerca nella tastiera, la mia query invia al mio server e ottenere il risultato, ma non so come ottenere evento di ricerca. qualche soluzione? inviare una query quando si fa clic sul pulsante di ricerca nella tastiera
5
A
risposta
8
È necessario estendere OnQueryTextListener, collegare l'ascoltatore e implementare onQueryTextSubmit.
Esempio:
@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;
}
0
Pozzo Apps risposta è giusta
ma per api sotto 11 e la biblioteca compat si può usare qualcosa di simile:
MenuItem search_menu=(MenuItem)menu.findItem(R.id.action_search);
SearchView searchView =(SearchView)MenuItemCompat.getActionView(search_menu);
0
È inoltre possibile applicare setOnKeyListener su visualizza come nel seguente esempio:
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;
}
});
0
È necessario aggiungere nuovo OnQueryTextListener e implementare onQueryTextSubmit. Anche questo funziona in un frammento.
Esempio:
@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);
}
Grazie mille, ha funzionato;) –
grandi, vuoi impostare la mia risposta come suppliche corrette. –
StackOverflow non mi permette di accettare la tua risposta fino a 5 minuti passati il mio amico;) –