SearchView 因页面更改而取消,但未正确清除
SearchView cancels with page change but doesn't clear properly
我有一个片段寻呼机,可以在相同 Fragment
的实例之间寻呼。在这些片段之上,通过应用栏中的 SearchView
实现搜索功能。用户应该能够在每个片段中单独搜索。
搜索功能过滤显示当前项目的ArrayList
。大多数搜索过滤器功能都按预期工作,但我 运行 遇到这个问题:
当用户正在搜索然后滑动到下一页时,搜索栏(如预期的那样)消失,但键盘保留在屏幕上。这意味着搜索未正确清除和取消。返回到上一个视图也显示过滤器仍然处于活动状态。用户需要重新启动搜索进程然后取消它才能再次正确查看列表。
问题在this video中得到了证明。
有什么方法可以避免这个问题?我目前正在考虑两种选择:
1 - 页面切换时,清除搜索功能
这确实有效,但是它不会自动摆脱键盘,也不会处理其他问题,例如在搜索处于活动状态时切换到另一个 Activity
。
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()
}
})
我有一个片段寻呼机,可以在相同 Fragment
的实例之间寻呼。在这些片段之上,通过应用栏中的 SearchView
实现搜索功能。用户应该能够在每个片段中单独搜索。
搜索功能过滤显示当前项目的ArrayList
。大多数搜索过滤器功能都按预期工作,但我 运行 遇到这个问题:
当用户正在搜索然后滑动到下一页时,搜索栏(如预期的那样)消失,但键盘保留在屏幕上。这意味着搜索未正确清除和取消。返回到上一个视图也显示过滤器仍然处于活动状态。用户需要重新启动搜索进程然后取消它才能再次正确查看列表。
问题在this video中得到了证明。
有什么方法可以避免这个问题?我目前正在考虑两种选择:
1 - 页面切换时,清除搜索功能
这确实有效,但是它不会自动摆脱键盘,也不会处理其他问题,例如在搜索处于活动状态时切换到另一个 Activity
。
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()
}
})