Я использую макет, имеющий вид поиска под панелью инструментов, и прямо под окном поиска я разместил макет, содержащий фрагмент и плавающий элемент управления.Невозможно очистить фокус поиска и андроида при переключении фрагментов
Вид поиска имеет автозаполнения функциональность, которая предполагает название города.
Когда я нажимаю кнопку поиска, он отправляет запрос, теряет фокус и скрывает предложения (вот как он должен работать).
Но когда я изменяю фрагмент (из списка ListView в MapView), нажав кнопку FloatingActionButton, поисковый вид снова захватывает фокус и начинает показывать те предложения, то есть названия городов.
Я использую следующий код для изменения фрагментов и очистить фокусировку
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();
}
}
Что мне нужно, что поиск Просмотр не должен иметь фокуса до тех пор, пока я не нажму на снова.
Я действительно застрял здесь, любая помощь действительно будет оценена. Благодарю вас.