Android 如何保留ActionBar';当导航到另一个片段时,搜索视图是什么?
我的RecyclerView可以通过片段操作栏中的SearchView进行过滤:Android 如何保留ActionBar';当导航到另一个片段时,搜索视图是什么?,android,searchview,Android,Searchview,我的RecyclerView可以通过片段操作栏中的SearchView进行过滤: override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_fragment_tasks, menu) val searchItem = menu.findItem(R.id.action_search) val searchView = search
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_fragment_tasks, menu)
val searchItem = menu.findItem(R.id.action_search)
val searchView = searchItem.actionView as SearchView
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
viewModel.setSearchQuery(newText.orEmpty())
return true
}
})
}
问题是,当用户现在导航到另一个片段时,这个SearchView被折叠,似乎向onQueryTextChange
发送了一个空字符串。以下是堆栈跟踪发生时的图像:
这将清除my ViewModel中的过滤器,当用户导航回RecyclerView片段时,所有未过滤的项目将再次显示
我可以将搜索查询手动存储在onDestroyView
中,然后在OnCreateOptions菜单
中还原它,但随后RecyclerView将有一个从完整列表到筛选列表的可见动画,这非常混乱。相反,RecyclerView应该在返回时保持其状态
有没有办法让SearchView在折叠时不发送空字符串?