2

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

它仅在我第一次按下菜单按钮时起作用。

谢谢!

4

2 回答 2

1

将代码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);
}
于 2012-12-05T10:28:28.573 回答
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;
}

如果您希望隐藏键盘,无论用户是否实际单击任何菜单项,您可能更喜欢这个。

于 2016-11-28T17:28:43.613 回答