Java 搜索到的文本在旋转屏幕后消失

Java 搜索到的文本在旋转屏幕后消失,java,android,search,rotation,Java,Android,Search,Rotation,我有一个带有默认搜索小部件的列表片段,它在列表中搜索。搜索后,列表将减少。然后单击以显示详细信息片段。在详细片段中,我旋转屏幕,然后单击返回列表片段。此列表片段未减少,搜索词不在搜索小部件中。若我并没有进行旋转,那个么搜索的单词就在搜索窗口小部件中。 在搜索小部件和列表中旋转和返回后,如何将单词留在搜索小部件中? 谢谢 这是代码的一部分。 显示详细信息: @Override public void onListItemClick(ListView l, View v, int positio

我有一个带有默认搜索小部件的列表片段,它在列表中搜索。搜索后,列表将减少。然后单击以显示详细信息片段。在详细片段中,我旋转屏幕,然后单击返回列表片段。此列表片段未减少,搜索词不在搜索小部件中。若我并没有进行旋转,那个么搜索的单词就在搜索窗口小部件中。 在搜索小部件和列表中旋转和返回后,如何将单词留在搜索小部件中? 谢谢

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

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