如何解决如何处理工具栏中SearchView中的后退箭头
如何处理androidx.appcompat.widget.SearchView
中的后退箭头?
我建立了以下答案:How to handle back arrow event in a SearchView,但它对我不起作用。我从一个片段设置菜单。
在MainActivity中,我具有以下功能:
override fun onOptionsItemSelected(item: MenuItem): Boolean
{
Log.d("MyTag","Activity")
return super.onOptionsItemSelected(item)
}
override fun onSupportNavigateUp(): Boolean
{
Log.d("MyTag","Up")
return navController.navigateUp()
}
在片段中:
searchView.setOnQueryTextListener(
object : SearchView.OnQueryTextListener
{
override fun onQueryTextSubmit(p0: String?): Boolean
{
Log.d("MyTag","onQueryTextSubmit")
hideKeyboard()
return true
}
override fun onQueryTextChange(p0: String?): Boolean
{
return true
}
}
)
override fun onOptionsItemSelected(item: MenuItem): Boolean
{
Log.d("MyTag","Fragment")
return super.onOptionsItemSelected(item)
}
当我单击后退箭头时,这些功能都不被调用。 Logcat看起来像这样:
// clicking search button
Activity
Fragment
// clicking Enter on keyboard
onQueryTextSubmit
// clicking back arrow (Nothing)
// When I go to the next fragment and navigate back
Activity
Up
为什么当我单击SearchView中的后退箭头时没有调用任何事件?我该如何实现?
感谢Rustam Samandarov,这里是onCreateOptionsMenu
的完整代码:
override fun onCreateOptionsMenu(menu: Menu,inflater: MenuInflater)
{
super.onCreateOptionsMenu(menu,inflater)
inflater.inflate(R.menu.menu_toolbar_home,menu)
val menuItem = menu.findItem(R.id.itemSearch)
val searchView = menuItem.actionView as SearchView
searchView.setOnQueryTextListener(
object : SearchView.OnQueryTextListener
{
override fun onQueryTextSubmit(p0: String?): Boolean
{
Log.d("MyTag","onQueryTextSubmit") // called when enter is pressed
hideKeyboard()
return true
}
override fun onQueryTextChange(p0: String?): Boolean
{
return true // called every time when text is changed
}
}
)
menuItem.setOnActionExpandListener(
object : MenuItem.OnActionExpandListener
{
override fun onMenuItemActionExpand(p0: MenuItem?): Boolean
{
Log.d("MyTag","onMenuItemActionExpand") // called when user opens SearchView
return true;
}
override fun onMenuItemActionCollapse(p0: MenuItem?): Boolean
{
Log.d("MyTag","onMenuItemActionCollapse") // called when user click back arrow or navigation back button
return true
}
}
)
}
解决方法
嗨,您应该将Expend侦听器设置为搜索视图
searchMenu.setOnActionExpandListener(
object : MenuItem.OnActionExpandListener {
override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
// Called when SearchView is collapsing
// Custom code to run on back pressed
return true
}
override fun onMenuItemActionExpand(item: MenuItem): Boolean {
// Called when SearchView is expanding
// Custom code to run on search view activated
return true
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。