java - EditText 完成后软键盘再次打开
问题描述
所以我有custom alert dialog
一个EditText
。每当我单击按钮进行确认,或者如果我单击软键盘自己的完成按钮时,我都会对应用程序进行编程以关闭对话框。但是由于某些奇怪的原因,soft-keyboard
警报对话框关闭后仍然打开......
最后的这段代码 buttonConfirm
是我试图解决这个问题的。由于某种原因,该代码不适用于按钮本身,但该代码确实适用于软键盘中的完成按钮
buttonConfirm.setOnClickListener(new
View.OnClickListener()
{..............
.................
closeKeyboard();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
dialog.dismiss();
}
}, 100); // 5000ms delay
}
//This is the code for the done-button in the `soft keyboard`
textinputEdit.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
if(actionId==EditorInfo.IME_ACTION_DONE){
buttonConfirm.performClick();
}
return false;
}
});
那么为什么直接按下按钮时它会起作用但按钮本身不起作用呢?这对我来说很奇怪..有人知道到底发生了什么吗?:(
解决方案
单击完成按钮时,调用hideSoftInputFromWindow
方法 -
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
推荐阅读
- android - 如何混淆预先构建的apk?
- python - Python中根据其他条件计算对应的时间间隔
- google-bigquery - BigQuery INSERT SELECT 导致记录的随机顺序?
- sql-server - 从同一个表中的两个日期范围获取数据 (MSSQL)
- python - python中的有限差分方法
- python - 如何使用 sklearn 和 numpy 获得预测的标签?
- c++ - 这个返回元素位置的基于循环的函数有什么问题?
- c# - 无法使用服务帐户通过 SMTP mailkit 和 Gmail API 发送消息
- encryption - base64 解码的字符串给出了奇怪的字符
- php - PHP DateInterval 创建分秒(微秒或毫秒)间隔