我有列表片段,默认搜索小部件,在列表中搜索。搜索后,列表减少。然后点击项目我显示细节片段。在详细片段中,我旋转屏幕,然后单击以返回列表片段。此列表片段未缩小,搜索词不在搜索小部件中。如果我不进行旋转,则搜索的单词位于搜索小部件中。 如何在搜索小部件和列表中旋转后返回搜索小部件中的单词将减少? 感谢。
这是代码的一部分。 显示详细信息:
@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说明问题。 在点击细节并旋转之前,我搜索:
搜索后,单击详细信息,旋转并单击返回:
我希望在旋转前列出相同的内容。
答案 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;
}
...