2

onCreateOptionsMenu (Menu menu)私はこのウェブサイトのためにいくつかの方法を試しましたが、成功せずにコードを挿入しました。メニューボタンをクリックしたときにキーボードを非表示にしたい。

いくつかのデータを書き込む3つの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 に答える