在 Leanback 搜索 fragment 中,当我们使用键盘提交搜索并获得搜索结果时,当使用后退按钮提交搜索查询时, fragment 将关闭。我们可以看到,在按下后退按钮时,结果会获得焦点并且键盘会隐藏(如预期的那样),但在按下后退按钮时,屏幕会关闭。
我认为这是 Leanback 框架中的一个错误,因为它正在 Leanback 展示中重现。
我也发布了一个问题 https://github.com/googlesamples/leanback-showcase/issues/58
是否有禁用屏幕关闭的解决方法?
最佳答案
我找到了错误的来源。 在 SearchSupportFragment 中有一个 searchBarListener,它在 onKeyboardDismiss 中将焦点放在结果上,但这在 dispatchKeyEvent 之前调用,当处理后退按钮时,结果已经聚焦并且屏幕正在关闭。
在 Leanback 团队修复它之前,我已经找到了一个 hacky 解决方案。在 onViewCreated 中,我设置了自己的 searchBarListener 并且延迟了焦点更改
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//this is overriding the default searchResultProvider, because of a bug in it
view.findViewById<SearchBar>(R.id.lb_search_bar).setSearchBarListener(object : SearchBar.SearchBarListener {
override fun onSearchQueryChange(query: String?) {
onQueryTextChange(query)
}
override fun onSearchQuerySubmit(query: String?) {
onQueryTextSubmit(query)
}
override fun onKeyboardDismiss(query: String?) {
searchHandler.postDelayed({ focusOnResults() }, 200)
}
})
}
关于android - 关注结果后 Leanback Search fragment 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50268110/