页面加载时调用 onCreateOptionsMenu
Posted
技术标签:
【中文标题】页面加载时调用 onCreateOptionsMenu【英文标题】:Call onCreateOptionsMenu when page is loaded 【发布时间】:2022-01-18 20:33:05 【问题描述】:我有一个小问题,我想在 own_product 为真时在我的操作栏中显示一个菜单,但是当我更改我的布尔值时,它仍然不可见,布尔变量稍后会更改。
private var own_product = false
override fun onCreateOptionsMenu(menu: Menu?): Boolean
println(own_product)
return if(own_product)
menuInflater.inflate(R.menu.product_details_menu,menu)
true
else false
fun myfunction()
productViewModel.getProductById(id).observe(this, Observer
product = it
if(product.user_id == auth.currentUser!!.email)
own_product = true
println(own_product)
title.text = product.title
description.text = product.description
date.text = product.date.toString()
image.setImageBitmap(product.image)
price.text = product.price.toString() +"€"
我该如何解决这个问题?
【问题讨论】:
在调用menuInflater
之前尝试调用super.onCreateOptionsMenu
并确保onCreate
中有setHasOptionMenu(true)
。来源:onCreateOptionsMenu not getting called - Bob Snyder.
【参考方案1】:
要刷新菜单,您应该在布尔值更改后使用以下代码
片段
requireActivity().invalidateOptionsMenu()
活动
invalidateOptionsMenu()
这会通知 android 菜单的内容已经改变,它会用新的值重绘菜单
【讨论】:
以上是关于页面加载时调用 onCreateOptionsMenu的主要内容,如果未能解决你的问题,请参考以下文章