我有一个Android应用程序,我有一个部分可以显示AlertDialog。在那个AlertDialog中,我有一个EditText,它预先填充了来自prefs的值,用户可以更改它。
代码工作正常但是,为了更直观地了解用户体验,我想要做的是当弹出警报对话框时,首选项的预填充值已经突出显示,键盘准备就绪。
到目前为止,我已经完成了输入突出显示,但我无法弹出键盘或以编程方式使请求重点工作。这是我的代码:
private void showPrefixChangerDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Set Pipe Prefix");
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
input.setGravity(Gravity.CENTER_HORIZONTAL);
input.setText(pipePrefix);
input.setSelection(0, 2);
input.performClick();
input.requestFocus();
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(2);
input.setFilters(filters);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(input, InputMethodManager.SHOW_IMPLICIT);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String finalInput = input.getText().toString();
saveInputToPrefs(finalInput);
tv.setText("Pipe Prefix is " + finalInput);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
正如您所看到的,我尝试使用performClick()
,requestFocus()
和InputManager
,但都无济于事。
有没有人遇到过这种情况?任何帮助将非常感谢。谢谢。
答案 0 :(得分:1)
找到解决方案from this thread
AlertDialog dialog = builder.create();
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
dialog.show();
我需要谷歌更好
答案 1 :(得分:0)
试试这个(“输入”是你的EditText):
InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
in.showSoftInput(input, InputMethodManager.SHOW_IMPLICIT);