旋转屏幕后搜索到的文字消失

Searched text disappear after rotate screen

我有带有默认搜索小部件的列表片段,它在列表中搜索。搜索后,列表会减少。然后单击项目 I 显示详细信息片段。在详细片段中,我旋转屏幕然后单击返回列表片段。此列表片段未减少,搜索的词不在搜索小部件中。如果我不进行旋转,则搜索到的词在搜索小部件中。 旋转并返回搜索小部件后,如何在搜索小部件中保留单词,并且列表会减少? 谢谢。

这是部分代码。 显示详细信息:

@Override
  public void onListItemClick(ListView l, View v, int position, long id) {
      DetailBirdFragment frg = new DetailBirdFragment();          
      DetailBirdFragment.Bird = (BirdItem)l.getItemAtPosition(position);
      DetailBirdFragment.isPaused =false;
      DetailBirdFragment.isPlay = false;
      DetailBirdFragment.mTimer = null;
      FragmentManager fm = getActivity().getFragmentManager();
      FragmentTransaction transaction = fm.beginTransaction();
      transaction.replace(R.id.container, frg);
      transaction.addToBackStack(null);
      transaction.commit();       
  }

按单词搜索项目:

@Override
  public boolean onQueryTextChange(String arg0) {       
      searchView.setQuery(ItemAdapter.FilterByOriginal, true);          
      ItmAdapter.notifyDataSetChanged();               
      getListView().invalidateViews();

      return false;
  }

创建列表片段:

@Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);            

    ...         

    ItmAdapter = new ItemAdapter(getActivity(), R.layout.list_item, birds);             
    setListAdapter(ItmAdapter);

    setRetainInstance(true);
    setHasOptionsMenu(true);
  }

已编辑

好的,我放两个PNG来说明问题。 在单击详细信息并旋转之前,我搜索:

搜索后,点击详情,旋转并点击返回:

我希望列表在轮换之前相同。

好的,我找到了解决方案。 onQueryTextChange 被调用了两次。首先是搜索词,其次是空搜索词。我不知道为什么。所以我做了这个修改,一切正常。

在 ListFragment 中:

  private static boolean wasPause;

  @Override
  public void onPause() {
      super.onPause();
      wasPause = true;
  }

   public boolean onQueryTextChange(String arg0) {      

      if (wasPause && TextUtils.isEmpty(arg0)) {
          wasPause = false;
          searchView.setQuery(ItemAdapter.FilterByOriginal, false);
          return false;
      }
    ...