Edittext görünümü olan bir iletişim kutusu görüntülüyorum. Ancak, softkeyboard yalnızca kullanıcı düzenleme görünümüne bastığında açılır. Bu yüzden aşağıdaki kodla bir InputMethodManager'ı aramayı denedim.İletişim kutusu için yumuşak klavye göster
dialogField, giriş alanıdır. Ancak, tam olarak ne zaman yapmam gerekiyor? Bunu iletişim kutusunun onStart() yönteminde denedim, ancak hiçbir şey olmuyor. Daha önce dialogField için odağı sormayı denedim, ama bu hiçbir şeyi değiştirmiyor.
Ben de her iki versiyonda da bu kodu
dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
public void onFocusChange (View v, boolean hasFocus)
{
if (hasFocus)
{
Main.log("here");
dialogInput.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
/*
InputMethodManager mgr =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(dialogField,0);
*/
}
}
});
çalıştı. Ancak, yumuşak bir klavye görünmek istemez. Main.log sadece işlevin aslında çağrıldığını gösteren bir kayıttır. Ve evet, denir.
Klavyeyi, iletişim kutusu açılmadan önce SHOW_FORCED bayrağı ile alabilirim. Ama sonra çıkışta kapanmayacak. Ve ben sadece diyalogu göstermeden ÖNCE yapabilirim. Herhangi bir geri aramada da işe yaramıyor.
SHOW_IMPLICIT bayrağını denediniz mi? –
Bu, aşırı derecede mücadele ettiğim, ancak düzgün çalışamadığım bir şey. – Thomas
Evet, SHOW_IMPLICIT bayrağını denedim. Belgeler, kullanıcının TextEdit için girdi yapması bekleniyorsa showSoftInput'u çağırmanız gerektiğini belirtir. Ama nasıl? – Rene