2017-04-19 11 views
0

検索ビューをクリックして検索するデータを入力すると結果が表示され、検索結果をクリックするとDetail Fragmentに移動し、戻るボタンを押しても機能しません。 ListFragmentに戻るには、もう一度ボタンを2回押す必要があります。しかし、それは私がボタンを押すとうまく動作します。 この理由は何でしょうか?検索ビューが開いているときにonBackPressedが呼び出されない

編集1:(追加コードスニペット)

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
      menu.clear(); 
      inflater.inflate(R.menu.defect_search, menu); 
      mIsMenuInflated = true; 
      mSearchItem = menu.findItem(R.id.action_search); 
      mSearchView = (SearchView) MenuItemCompat.getActionView(mSearchItem); 
      mSearchView.setQueryHint(getString(R.string.search_defect_hint)); 
      mSearchView.setOnQueryTextListener(this); 
      mSearchView.setOnQueryTextFocusChangeListener(this); 

      super.onCreateOptionsMenu(menu, inflater); 
    } 


public void onClickDefect(Integer defectId) { 
     hideKeyboard(mActivity); 
     getActivity().getSupportFragmentManager() 
       .beginTransaction() 
       .add(R.id.frame_content, DefectTabFragment.newInstance(defectId)) 
       .addToBackStack(null) 
       .commit(); 
    } 

および活性のonBackPressed()においては、Iフラグメントをポップ。

+0

をするのに役立ちます。 – CodeCameo

答えて

0

SearchViewがの場合、backボタンtwiceを押してListFragmentに戻る必要があります。 Documentationから

:デフォルトでは

searchable activityonCreate()への呼び出しとactivityの新しいインスタンスをACTION_SEARCH意図 を受けactivity stackの先頭に をもたらしています。 2つのインスタンスactivity stacksearchable activity(そう Back buttonを押すことではなくsearchable activityを終了するよりも、searchable activityの前のinstanceに戻ります)あなたの が存在することになります。

希望これはあなたの実装からいくつかのコードを共有する必要がある〜

+0

はい、これはListFragmentでは絶対に問題ありません。しかし、同じ振る舞いはDetailFragmentでも見られますが、なぜ分かりませんか? – Velu

関連する問題