旋转屏幕后搜索到的文字消失
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;
}
...
我有带有默认搜索小部件的列表片段,它在列表中搜索。搜索后,列表会减少。然后单击项目 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;
}
...