如何知道活动中的菜单项是何时创建的?

How to know when are menu items in activity created?

提问人:Chris 提问时间:9/22/2023 最后编辑:Chris 更新时间:9/22/2023 访问量:18

问:

我有一个活动,工具栏显示设置菜单。

当我通过以下方式访问菜单项时

            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()。

有没有解决方案可以在菜单项可用时收到通知?

Kotlin Android-Activity Android-工具栏 菜单项

评论

0赞 Tenfour04 9/22/2023
onCreateOptionsMenu()?
0赞 Chris 9/22/2023
不,即使在 onCreateOptionsMenu() 中,我从 XML 膨胀菜单,菜单项视图仍然是空的。我已经测试过了。

答: 暂无答案