gpt4 book ai didi

android - 带有 EditText 的 AlertDialog,以 EditText 为焦点自动打开软键盘不起作用

转载 作者:IT王子 更新时间:2023-10-29 00:08:36 26 4
gpt4 key购买 nike

我正在尝试进行一段代码工作,它应该在显示时将 EditText 聚焦在 AlertDialog 中,然后自动打开软键盘。相反,它只会让屏幕变暗。

Builder builder = new Builder(this);
final EditText input = new EditText(this);
AlertDialog dialog = builder.create();
builder
.setTitle(R.string.dialog_title_addsubject)
.setMessage(R.string.dialog_addsubject)
.setView(input)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String value = input.getText().toString();
if (input.getText().toString().trim().length() == 0) {
Toast.makeText(Main.this, R.string.input_empty, Toast.LENGTH_SHORT).show();
} else {
db.insertSubject(value);
getData();
}
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
input.requestFocus();
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
dialog.show();

我尝试了很多方法,但都没有奏效。我希望你们能在这里帮助我。提前致谢!

最佳答案

好的,我设法让它工作了:

Builder builder = new Builder(this);
final EditText input = new EditText(this);
builder
.setTitle(R.string.dialog_title_addsubject)
.setMessage(R.string.dialog_addsubject)
.setView(input)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
String value = input.getText().toString();
if (input.getText().toString().trim().length() == 0) {
Toast.makeText(Main.this, R.string.input_empty, Toast.LENGTH_SHORT).show();
} else {
db.insertSubject(value);
getData();
}
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(input.getWindowToken(), 0);
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(input.getWindowToken(), 0);
}

});

builder.show();
input.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

此方法不需要对话框,因此我可以使用 builder.show() 显示对话框,Sabre 提供的代码打开软键盘。每个按钮中的另一个代码 fragment 会自动关闭软键盘。

关于android - 带有 EditText 的 AlertDialog,以 EditText 为焦点自动打开软键盘不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12997273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com