Zaimplementowałem system Android search widget
w mojej aplikacji opartej na navigation drawer
. Ustawiłem go, aby otworzyć klawiaturę i ustawić ostrość na editText
po kliknięciu ikony wyszukiwania. Chcę ustawić przycisk Wstecz (przycisk w górę), aby ukryć klawiaturę. Przeszukałem sieć pod kątem R.id
przycisku w górę i znalazłem to android.R.id.home
. Więc mam ustawić ją jako:Ustaw funkcjonalność przycisku wstecznego widgetu wyszukiwania
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
case android.R.id.home:
hideKeyboard();
break;
...
}
I debugowania kodu i zauważyłem, że klikając na ikonę navigation bar
pożarów w górę android.R.id.home
, ale uderzanie się przycisk wyszukiwania widget nawet nie wprowadzić onOptionsItemSelected(MenuItem item)
funkcjonować. Próbowałem również:
searchView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard();
}
}
});
Ale nie działa.
Jak ukryć klawiaturę po naciśnięciu przycisku cofania (w górę)?
Ustawianie widoku wyszukiwania:
private void setSearchView(Menu menu) {
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.search).getActionView();
// Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
public boolean onQueryTextChange(String newText) {
Home.getFilter().filter(newText);
return true;
}
public boolean onQueryTextSubmit(String query) {
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
}
Czy sprawdziłeś ten wątek? [Funkcja SearchView w OnCloseListener nie działa] (http://stackoverflow.com/questions/9327826/searchviews-oncloselistener-doesnt-work/12975254#12975254). Druga część, której autor nie powinien polegać na 'android.R.id.home' jest jednak w pełni napięta. –