单击菜单时如何隐藏默认键盘?

时间:2012-12-05 10:26:47

标签: android

我已经通过在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;
}

仅在我第一次按下菜单按钮时才有效。

谢谢!

2 个答案:

答案 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;
}

如果您想要隐藏键盘,无论用户是否实际上随后点击了任何菜单项,您都可能更喜欢这个。