canot click on menu item

36 views Asked by At

I am trying to have a menu item using menu host, I can see the item, but when I click it nothing happens, onMenuItemSelected is not called, none of the timber logs are logged.

Is there anything wrong I am doing here please

    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)

}

Activity that is hosting the fragment which does not have any code related to menu

class 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)

}
1

There are 1 answers

0
BRDroid On

missing bit of code that made it to work in the onCreateMenu method was

     val skipMI = menu.findItem(R.id.skipMI)
                skipMI?.actionView?.setOnClickListener { onMenuItemSelected(skipMI) }