我正在自定义 DatePickerDialog 来为原生 DatePicker 添加一些我的功能。这是按预期工作的。但是默认情况下 DatepickerDialog 的日、月和年字段是可编辑的。所以当我关注那些可编辑的输入字段时,软键盘将默认打开并使用将能够编辑日期/月/年,当用户编辑日/月/年并按下设置/取消编辑日期时 DatePickerDialog 正在关闭和功能正常工作。这里我的问题是当用户编辑日/月/年并按下设置/取消编辑日期时 DatePickerDialog 正在关闭并且软键盘仍然打开。一旦 DatePickerDialog 被解雇,它就不会关闭。所以为此我尝试使用以下代码隐藏软键盘。
private DialogInterface.OnDismissListener myOnDismissListener = new DialogInterface.OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
InputMethodManager imm = (InputMethodManager) ((Activity) ctContext)
.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(this.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
};
但这不起作用。所以我尝试使用以下代码切换软键盘。
private DialogInterface.OnDismissListener myOnDismissListener = new DialogInterface.OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
InputMethodManager imm = (InputMethodManager) ((Activity) ctContext)
.getSystemService(Activity.INPUT_METHOD_SERVICE);
if(imm.isActive())
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
};
但是这里 imm.isActive() 总是返回 false。如果我删除了 if(imm.isActive()) 条件它在软键盘打开时的工作。但是,当软键盘未打开并使用时,只需打开 DatePickerDialog 并通过使用箭头更改来设置或取消日期软键盘在关闭 DatePickerDialog 时打开。所以我需要正确获取 imm.isActive() 值。但它总是返回错误。
因此,请有人帮助我确定是否打开软键盘的正确方法。