Olá Marcelo, tudo bem?
Para isso, eu recomendo utilizar a dependência de fragments do android para utilizar a função addMenuProvider
, basta incluir esta linha nas suas dependências de módulo:
implementation 'androidx.fragment:fragment-ktx:1.5.4'
Agora, existem diversas formas de resolver seu problema, estarei lhe aparesentando uma delas. Na sua Activity/Fragment, crie um variável global para representar a instância se é cliente ou não.
private var isClient: Boolean = true
Em seguida, vamos configurar seu menu através de uma função chamada setupMenu
e dentro dela implementamos os métodos do MenuProvider que nos fornece o onCreateMenu
onde podemos fazer as alterações, eu fiz um botão que altera esse título, mas você pode usar da forma que achar melhor, para isso vamos encontrar o item dentro do menu e mudar a propriedade text
dele através da lógica com a nossa variável isClient
:
val title = if (isClient) "Client" else "Fornecedor"
val menuItem = menu.findItem(R.id.cliente_ou_fornecedor)
menuItem.title = title
O código completo da activity se encontra aqui:
class MainActivity : AppCompatActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
private var isClient: Boolean = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
setupMenu()
}
private fun setupMenu() {
addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.main_menu, menu)
binding.buttonChangeTitle.setOnClickListener {
isClient = !isClient
val title = if (isClient) "Client" else "Fornecedor"
val menuItem = menu.findItem(R.id.cliente_ou_fornecedor)
menuItem.title = title
}
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
return true
}
})
}
}
Se restar qualquer dúvida, estarei à disposição :)
Forte abraço e bons estudos!!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!