W działaniu powiedz MainActivity
, programowo dodałem fragment powiedz Fragment_1
Ten Fragment_1
ma układ, który zawiera EditText
. Kiedy zaczynam pokazywać to Fragment_1
, EditText
skupia się, ale soft keyboard
nie jest otwarty
Więc klikam EditText
, aby otworzyć keyboard
, type some text
i click done button
, które muszą zastąpić Fragment_1
Fragment_2
, który zawiera również EditText
.
Ale to EditText
w Fragment_2
nie jest focused
, ale keyboard
nadal jest open
(może być z powodu ostatniego Fragment_1
)
Więc dodałem to dla Fragment_2
EditText.requestFocus();
Fokus jest tam, a klawiatura jest otwarta, ale EditText
nie jest wypełniany przez klawisze, które klikam.
Dlaczego tak jest?
Dziękuję Ci.
2 odpowiedzi
Powinieneś ukryć klawiaturę dla pierwszej edycji tekstu na pierwszym fragmencie
private InputMethodManager mInputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
EditText.clearFocus();
mInputMethodManager.hideSoftInputFromWindow(EditText.getWindowToken(), 0);
I wtedy powinieneś poprosić o fokus i pokazać klawiaturę do drugiej edycji tekstu:
EditText.requestFocus();
mInputMethodManager.showSoftInput(EditText, 0);
Menedżer metod wprowadzania ignoruje żądania klawiatury, chyba że EditText
i okno, w którym się znajduje, mają fokus. Tak więc po wprowadzeniu Activity
/ Dialog
musisz poczekać, aż fokus się uspokoi, zanim poprosisz o klawiaturę. Możesz to zrobić, wywołując usługę InputMethodManager
w OnFocusChangeListener
, ale Widoki mogą uzyskać fokus przed samo Okno, więc musisz poczekać na fokus okna. Nie ma sposobu, aby dodać OnFocusChangeListener
do samego obiektu Window, ale nasłuchiwanie fokusa Widoku i publikowanie Runnable wydaje się działać.
Proszę spojrzeć na piękną analizę tutaj
Podobne pytania
Nowe pytania
android
Android to mobilny system operacyjny Google, używany do programowania lub tworzenia urządzeń cyfrowych (smartfony, tablety, samochody, telewizory, Wear, Glass, IoT). W przypadku tematów związanych z Androidem użyj tagów specyficznych dla Androida, takich jak android-intent, android-activity, android-adapter itp. W przypadku pytań innych niż programowanie lub programowanie, ale związanych ze strukturą Androida, użyj tego linku: https: // android.stackexchange.com.