页面加载时调用 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在页面加载时调用 JavaScript 函数?

页面加载时调用 onCreateOptionsMenu

在页面加载时调用 JSF 托管 bean 操作

页面加载时调用的离子无限滚动功能

当页面在 Angular 10 中完全加载时调用组件函数

JSF。在每个页面加载时调用支持 bean 方法[重复]