我试图使用菜单主机创建一个菜单项,我可以看到该项目,但是当我单击它时没有任何反应,onMenuItemSelected 未被调用,没有记录任何木材日志。
我在这里做错了什么吗
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val menuHost: MenuHost = requireActivity()
menuHost.addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.electricity_tar_link, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
Timber.d("xxx - onMenuItemSelected")
return when (menuItem.itemId) {
R.id.skipMI -> {
Timber.d("xxx - onMenuItemSelected - skip")
onTarListener.onElecTarSkip()
true
}
else -> {
Timber.d("xxx - onMenuItemSelected - else")
false
}
}
}
}, viewLifecycleOwner, Lifecycle.State.RESUMED)
}
托管片段的活动没有任何与菜单相关的代码
ElecTarActivity 类:InjectionFragmentActivity(), OnElecProviderListener, OnElecTarListener {
// region Setup
lateinit var binding: AppBarActivityBinding
override val toolbar: Toolbar
get() = binding.appBar.toolbar
override val coordinatorLayout: CoordinatorLayout
get() = binding.coordinatorLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = AppBarActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
setAppBar(toolbar, showHomeAsUp = true)
}
缺少使其在
onCreateMenu
方法中工作的代码是
val skipMI = menu.findItem(R.id.skipMI)
skipMI?.actionView?.setOnClickListener { onMenuItemSelected(skipMI) }