Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何保留ActionBar';当导航到另一个片段时,搜索视图是什么?_Android_Searchview - Fatal编程技术网

Android 如何保留ActionBar';当导航到另一个片段时,搜索视图是什么?

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

我的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 = 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在折叠时不发送空字符串?