Android SearchView会随着页面更改而取消,但不会';我不能正常清除
我有一个片段寻呼机,可以在相同Android SearchView会随着页面更改而取消,但不会';我不能正常清除,android,android-viewpager,searchview,fragmentpageradapter,Android,Android Viewpager,Searchview,Fragmentpageradapter,我有一个片段寻呼机,可以在相同片段的实例之间进行分页。在这些片段之上,搜索功能通过应用程序栏中的SearchView实现。用户应该能够在每个片段中单独搜索 搜索功能过滤显示当前项目的ArrayList。大多数搜索筛选器功能都按预期工作,但我遇到了以下问题: 当用户正在搜索,然后滑动到下一页时,搜索栏(如预期)消失,但键盘仍在屏幕上。这意味着搜索未正确清除和取消。返回上一个视图还显示过滤器仍然处于活动状态。用户需要重新启动搜索过程,然后取消搜索以再次正确查看列表 该问题在中得到了演示 有什么办法可
片段的实例之间进行分页。在这些片段之上,搜索功能通过应用程序栏中的SearchView
实现。用户应该能够在每个片段中单独搜索
搜索功能过滤显示当前项目的ArrayList
。大多数搜索筛选器功能都按预期工作,但我遇到了以下问题:
当用户正在搜索,然后滑动到下一页时,搜索栏(如预期)消失,但键盘仍在屏幕上。这意味着搜索未正确清除和取消。返回上一个视图还显示过滤器仍然处于活动状态。用户需要重新启动搜索过程,然后取消搜索以再次正确查看列表
该问题在中得到了演示
有什么办法可以避免这个问题?我目前正在考虑两种选择:
1-在页面更改时,清除搜索功能
这确实有效,但是它不会自动摆脱键盘,也不会处理其他问题,例如在搜索处于活动状态时切换到另一个活动
2-找出一种方法,通知搜索已取消
这将是最佳的方式,但我还没有想出如何做到这一点。遗憾的是,SearchView
的OnCloseListener
只对关闭SearchView
的传统方式做出反应,所以我不能使用它
提前感谢您的帮助,我期待着您的建议。因此我没有找到解决方案,但在取消视图时我成功地获得了一个事件。当搜索下拉列表被附加或分离时,我通过添加一个OnAttachStateChangeListener
来获取事件,如所建议的
这样,我可以在取消视图时清除应用的搜索。幸运的是,当搜索正确输入时,这也不会清除视图!只有当SearchView
正确离开视图时,才会调用它
searchView.addOnAttachStateChangeListener(object: View.OnAttachStateChangeListener {
override fun onViewAttachedToWindow(p0: View?) {
// the view was expanded
}
override fun onViewDetachedFromWindow(p0: View?) {
// the view was collapsed
searchView.clearFocus()
DataManager.clearSearch()
}
})