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