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

时间:2015-04-05 18:01:42

标签: java android search rotation

我有列表片段,默认搜索小部件,在列表中搜索。搜索后,列表减少。然后点击项目我显示细节片段。在详细片段中,我旋转屏幕,然后单击以返回列表片段。此列表片段未缩小,搜索词不在搜索小部件中。如果我不进行旋转,则搜索的单词位于搜索小部件中。 如何在搜索小部件和列表中旋转后返回搜索小部件中的单词将减少? 感谢。

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

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

EDITED

好的,我把两个PNG说明问题。 在点击细节并旋转之前,我搜索: enter image description here

搜索后,单击详细信息,旋转并单击返回: enter image description here

我希望在旋转前列出相同的内容。

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。 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;
      }
    ...