カスタムAlertDialogが表示されますが、レイアウトのEditTextフィールドをタップすると、ソフトキーボードが自動的に表示されません。私が使用してこのソリューションAndroid: EditText in Dialog doesn't pull up soft keyboardを試してみました:Android:EditTextフォーカスのカスタムAlertDialogにソフトキーボードを表示
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
私が正しい場所にコードを入れていない午前とそれは同じくらい簡単かもしれません。私は、アクティビティのonCreateDialogとonPrepareDialog、およびカスタムAlertDialogのコンストラクタとonCreateでそれを試しました。それはうまくいかなかった。
これは、EditTextフィールドにonFocusリスナーを持たせようとするよりもベストプラクティスに見えるので、私はこの解決法を好むでしょう。私は
public LocationDetails(Context context, DetailsSetEventListener detailsSetEventListener) {
super(context);
this.context = context;
this.detailsSetEventListener = detailsSetEventListener;
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
AlertDialogクラスでこれが動作しない理由を任意のアイデアを、それを試してみた方法
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch (id) {
case LOCATION_DETAILS_DIALOG:
dialog = new LocationDetails(this, detailsSetListener);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
return dialog;
default:
return null;
}
}
protected void onPrepareDialog(final int id,final Dialog dialog){
super.onPrepareDialog(id, dialog);
switch (id) {
case LOCATION_DETAILS_DIALOG:
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
}
活動でそれを試してみた方法
?
したがって、メッセージとOK/Cancelボタンを提供するだけなので、AlertDialogはキーボードを抑制しているとします。それは単にプロンプトとして使用する必要があります。 私はカスタムダイアログの基本クラスをダイアログに変更しました。私のカスタムDialogが継承する基底クラスを変更するだけで、EditTextフィールドは、期待通りに、フォーカスを受け取ったときにソフト/仮想キーボードをプルアップします。 – mplspug