В моем приложении у меня есть диалоговое окно, где пользователь должен ввести текст в текст редактирования. Но когда я нажимаю за пределами диалогового окна, чтобы закрыть диалоговое окно, диалоговое окно закрывается, но программная клавиатура, которая выскочила, потому что я нажал на тексте редактирования, остается. Это очень странно: когда я устанавливаю windowsoftinputmode в stateAlwaysHidden, клавиатура становится немного прозрачной, но не закрывается. У меня есть только эта проблема в портретной, в альбомной это не происходит, но это может быть потому, что программная клавиша заполняет весь экран. Я также не могу нажать на клавиши клавиатуры, она не реагирует. Я уже пытался установить режим windowsoftinput на разные значения, и я установил oncancellistener на моем dialo g, который должен закрыть экранную клавиатуру, но это не так. Это кажется мне ошибкой.
Код моего диалога
public void create(View view) {
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_SWIPE_TO_DISMISS);
dialog.setContentView(R.layout.dialoglayout);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
dialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialog) {
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
View view = getCurrentFocus();
if (view == null) {
view = new View(getBaseContext());
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
});
editText = dialog.findViewById(R.id.levelname);
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
name = editText.getText().toString();
callables.totaloverwriteFile(name,getApplicationContext(),"newlevelname");
getApplicationContext().startActivity(new Intent(getApplicationContext(), CreatorActivity.class));
return true;
}
return true;
}
});
}```