提问人:Chris 提问时间:9/22/2023 最后编辑:Chris 更新时间:9/22/2023 访问量:18
如何知道活动中的菜单项是何时创建的?
How to know when are menu items in activity created?
问:
我有一个活动,工具栏显示设置菜单。
当我通过以下方式访问菜单项时
val icon0 = ResourcesCompat.getDrawable(resources, id0, null)
(findViewById<View>(R.id.zone0) as? ItemView)?.setIcon(icon0)
在我的活动的 onCreate(...) 中,应用程序崩溃,因为 findViewById 返回 null。
但是,在开始几秒钟后,我从findViewById得到了一个nun-null结果。“zone0”是位于工具栏中的 ImageView。
请注意,我没有使用片段。我想知道 - 在我的活动范围内 - 何时可以访问我的菜单项视图“zone0”。从文档中,我没有看到任何指示这一点的回调。
从文档中,我读到了有关菜单的信息:
在运行时更改菜单项
系统调用 onCreateOptionsMenu() 后,会保留一个实例 ,并且不会再次调用 onCreateOptionsMenu() 的菜单 除非菜单因某种原因无效。但是,您应该 仅使用 onCreateOptionsMenu() 创建初始菜单状态和 在活动生命周期内不进行更改。
如果要根据发生的事件修改选项菜单 在活动生命周期中,您可以在 onPrepareOptionsMenu() 方法。此方法将 Menu 对象传递给您 因为它当前存在,因此您可以对其进行修改,例如添加、删除或 禁用项目。(片段还提供 onPrepareOptionsMenu() 回调。
在 Android 2.3.x 及更低版本上,系统会调用 onPrepareOptionsMenu() 每次用户打开选项菜单时(按菜单按钮)。
在 Android 3.0 及更高版本上,选项菜单被视为始终 当菜单项显示在应用栏中时打开。当事件发生时 发生,并且您要执行菜单更新,您必须调用 invalidateOptionsMenu() 请求系统调用 onPrepareOptionsMenu()。
有没有解决方案可以在菜单项可用时收到通知?
答: 暂无答案
评论
onCreateOptionsMenu()
?