エディットテキストビューのダイアログを表示しています。ただし、ソフトキーボードは、ユーザーがエディットビュー内を押した場合にのみ開きます。そこで、次のコードでInputMethodManagerを呼び出してみました。
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
dialogFieldは入力フィールドです。しかし、正確にいつこれを行うことになっていますか?ダイアログのonStart()メソッドで試しましたが、何も起こりません。以前にdialogFieldのフォーカスをリクエストしようとしましたが、何も変わりません。
私もこのコードを試しました
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);
*/
}
}
});
両方のバージョンで。ただし、ソフトキーボードは表示されません。Main.logは単なるログであり、関数が実際に呼び出されていることを示しています。そして、はい、それは呼ばれています。
ダイアログが開く前に、SHOW_FORCEDフラグが付いたキーボードを入手できました。ただし、終了時に閉じません。そして、私はダイアログを表示する前にそれを行うことができるだけです。コールバック内でも機能しません。