我已经通过在onCreateOptionsMenu (Menu menu)
中插入代码而没有成功,为此网站尝试了多种方法。我想在单击菜单按钮时隐藏键盘。
我有三个EditText,我写了一些数据,插入/删除/修改数据库的选项都在菜单上,但如果我点击,键盘就不会自动隐藏。
我有这样的事情:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
if(this.getCurrentFocus() != null && this.getCurrentFocus() instanceof EditText){
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
return true;
}
仅在我第一次按下菜单按钮时才有效。
谢谢!
答案 0 :(得分:0)
将代码移至onOptionsItemSelected
而不是
public boolean onOptionsItemSelected(MenuItem item) {
.....
if(this.getCurrentFocus() != null && this.getCurrentFocus() instanceof EditText){
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:0)
您可以将InputMethodManager
代码放在onPrepareOptionsMenu()
回调中的另一个地方是:
public boolean onPrepareOptionsMenu (Menu menu) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
return true;
}
如果您想要隐藏键盘,无论用户是否实际上随后点击了任何菜单项,您都可能更喜欢这个。