Ich verwende ein Layout mit einer Suchansicht unter der Symbolleiste, und direkt unter der Suchansicht habe ich ein Layout platziert, das ein Fragment und einen FloatingActionButton enthält.Fokus der Suchansicht kann nicht gelöscht werden, während Fragmente verschoben werden
Die Suche hat eine Auto-Funktionalität, die Stadt Name vermuten lässt.
Wenn ich die Suchschaltfläche drücke, wird die Abfrage gesendet, der Fokus verloren und die Vorschläge ausgeblendet (so soll es funktionieren).
Wenn ich jedoch das Fragment (von ListView zu MapView) ändere, indem ich auf den FloatingActionButton klicke, greift die Suchansicht erneut auf den Fokus und beginnt mit der Anzeige dieser Vorschläge, also Städtenamen.
ich den folgenden Code verwende die Fragmente zu ändern und löschen Sie den Fokus
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (flagFAB) {
fab.setImageResource(android.R.drawable.ic_menu_sort_by_size);
flagFAB = false;
if (fragmentManager.findFragmentByTag("testFrag2") != null) {
Log.wtf(TAG, "if the fragment exists, show it.");
fragmentManager.beginTransaction().show(fragmentManager.findFragmentByTag("testFrag2")).commit();
} else {
Log.wtf(TAG, "if the fragment does not exist, add it to fragment manager.");
fragmentManager.beginTransaction().add(R.id.tabListBM, testFrag2, "testFrag2").commit();
}
if (fragmentManager.findFragmentByTag("fragList") != null) {
Log.wtf(TAG, "if the other fragment is visible, hide it.");
fragmentManager.beginTransaction().hide(fragmentManager.findFragmentByTag("fragList")).commit();
}
} else {
fab.setImageResource(android.R.drawable.ic_dialog_map);
flagFAB = true;
if (fragmentManager.findFragmentByTag("fragList") != null) {
//if the fragment exists, show it.
fragmentManager.beginTransaction().show(fragmentManager.findFragmentByTag("fragList")).commit();
} else {
//if the fragment does not exist, add it to fragment manager.
fragmentManager.beginTransaction().add(R.id.tabListBM, listFrag, "fragList").commit();
}
if (fragmentManager.findFragmentByTag("testFrag2") != null) {
//if the other fragment is visible, hide it.
fragmentManager.beginTransaction().hide(fragmentManager.findFragmentByTag("testFrag2")).commit();
}
}
clearFocusSearchView();
}
});
@Override
public void clearFocusSearchView() {
if (title.contentEquals("city")) {
Log.wtf(TAG, "CLEAR FOCUS MAP");
searchView.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchView.getWindowToken(), 0);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
searchView.clearFocus();
}
}
Was ich brauchen, ist, dass die Suche sollte nicht den Fokus haben, bis und es sei denn, i auf klicken es wieder.
Ich bin wirklich hier fest, jede Art von Hilfe würde wirklich geschätzt werden. Danke.