如何解决导航到另一个片段时如何保留ActionBar的SearchView?
我的RecyclerView可以通过片段的ActionBar中的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 = 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
发送了一个空字符串。这是堆栈跟踪发生时的图像:
这将清除我的ViewModel中的过滤器,并且当用户导航回到RecyclerView片段时,所有未过滤的项目将再次显示。
我可以手动将搜索查询存储在onDestroyView
中,然后将其恢复到onCreateOptionsMenu
中,但是RecyclerView会显示从完整列表到过滤列表的可见动画,这非常令人困惑。取而代之的是,RecyclerView应该只在返回时保持其状态。
有没有办法让SearchView在折叠时不发送空字符串?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。