ปัญหานี้เกิดขึ้นเมื่อมีการเพิ่ม EditText หลังจากเรียก AlertDialog.onCreate
https://developer.android.com/reference/androidx/appcompat/app/AlertDialog.Builder
คลาส AlertDialog จะดูแลการตั้งค่า android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM โดยอัตโนมัติสำหรับคุณโดยขึ้นอยู่กับว่ามุมมองใด ๆ ในกล่องโต้ตอบส่งคืนจริงจาก View.onCheckIsTextEditor ()
คุณต้องล้างแฟล็ก FLAG_ALT_FOCUSABLE_IM
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
เนื่องจาก AlertDialog.show ถูกเรียกใน DialogFragment.onStart คุณจึงสามารถแทรกรหัสใน DialogFragment.onStart
@Override
public void onStart() {
super.onStart();
getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
หรือคุณสามารถใช้ Dialog.setOnShowListener ถ้าคุณไม่ใช้ DialogFragment
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
});