2017-11-14 9 views
0

BACKを押すと、searchViewを閉じるコードが必要です。これまでは、BACKを押すとキーボードを閉じるコードしかありませんでした。onBackptressedが動作しないときにonOptionsItemSelected(MenuItemアイテム)のsearchViewを閉じるにはどうすればいいですか?

enter image description here

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 


    if (item.getItemId() == android.R.id.home) { 

     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     View view = this.getCurrentFocus(); 
     if (view != null) { 
      imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
     } 
    } 
    return super.onOptionsItemSelected(item); 
    } 

次の行が廃止されました

onBackPressed(); 

...私は次の行を試みたが、この行は「背中」はクリック何らかの理由で全体のアプリを閉じて.. 。

MenuItemCompat.collapseActionView(menuItem); 

私はstackOverflowでいくつかの回答を見ましたが、 o onBackPressed()で行うか、searchView.collapseActionView()を追加してください。 しかし、で再宣言してからsearchView.collapseActionView()を追加しないと、searchViewをonOptionsItemSelected(MenuItem item)に追加できませんが、BACKを押すとアプリがクラッシュします。

私はキーボードを閉じることができましたが、どのようにしてonOptionsItemSelected(MenuItem item)のsearchViewを閉じるのですか?

EDIT:

私はonBackPressed()またはsuper.onBackPressed()またはthis.onBackPressed()を使用し、最初に私は、「戻る」ボタンをsearchViewをクリックして、時間とキーボードに近いが、私はsearchViewとキーボードを開くために、再度検索アイコンをクリックしてくださいポップアップ、再び "戻る"をクリックすると、アプリ全体がクラッシュせずに終了し、閉じてAndroidのホーム画面に移動します。なぜこうなった?

答えて

0

更新

@Override 
    public void onBackPressed() { 
     if (!yourSearhView.isIconified()) { 
      yourSearhView.onActionViewCollapsed(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

アプリを設定している場合、これは動作しません。showAsAction =「常に」

+0

このコードは、私のために動作しません。 – iBEK

+0

私の更新された答えを確認してください – diegoveloper

+0

このコードは私にとってはうまくいかず、私はそれをstackOverflowで見ました。 – iBEK

関連する問題