Skip to content

Instantly share code, notes, and snippets.

@navczydev
Created August 13, 2023 00:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save navczydev/910ca2b85d3bd078ac0f8c1bebf9213e to your computer and use it in GitHub Desktop.
Save navczydev/910ca2b85d3bd078ac0f8c1bebf9213e to your computer and use it in GitHub Desktop.
// 1. It only takes 1 parameter - [MenuProvider]
/*
* We need to manually remove the MenuProvider by calling removeMenuProvider().
* */
addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.main_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
return when (menuItem.itemId) {
R.id.settings -> {
true
}
else -> false
}
}
})
// 2. It takes 2 parameters - [MenuProvider, LifeCycleOwner]
/*
* Adds the given MenuProvider to the MenuHost.
MenuProvider will be removed once the given LifecycleOwner receives an Lifecycle.Event.ON_DESTROY event.
* */
addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.main_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
return when (menuItem.itemId) {
R.id.settings -> {
Toast.makeText(this@MainActivity, "Settings...", Toast.LENGTH_SHORT).show()
true
}
else -> false
}
}
}, /*lifecycleOwner*/ this)
// 3. It takes 3 parameters - [MenuProvider, LifeCycleOwner, Lifecycle.State]
/*
* Adds a MenuProvider to the MenuHost when a given LifecycleOwner reaches a given Lifecycle.State.
LifecycleOwners will be removed once they reach a lower Lifecycle.State.
* */
addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.main_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
return when (menuItem.itemId) {
R.id.settings -> {
Toast.makeText(this@MainActivity, "Settings...", Toast.LENGTH_SHORT).show()
true
}
else -> false
}
}
}, /*lifecycleOwner*/ this, /*Lifecycle.State*/ Lifecycle.State.RESUMED)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment