选项菜单创建完成时的回调函数

29
我需要确保在运行访问菜单项的某个代码之前,选项菜单已被创建。是否有回调函数可以实现这一点,或者我该如何实现呢?
在Activity的onResume()中,是否有任何保证菜单已被创建?
3个回答

0

你不能在这里使用onResume。

实际上,当你的应用程序启动时,这是调用顺序:

  1. onResume()
  2. onCreateOptionMenu
  3. onPrepareOptionsMenu

可以看到,在onResume之后调用了onCreateOptionsMenu(你可以通过重写方法并将其写入控制台来自行验证)。还要注意的是,即使菜单此时未显示给用户,onPrepareOptionsMenu也会在应用程序启动时至少被调用一次。

现在,你没有详细说明你想做什么,但如果你想做的是“运行访问其中一个菜单项的某些代码”,那么你可以使用onPrepareOptionsMenu,因为它在onCreateOptionsMenu之后被调用,并且每当你的应用程序回到前台时都会被调用 - 也就是在onResume之后。根据代码是否需要运行一次或每次运行,你可以在该方法中使用布尔标志(或者如果它只需要运行一次,则将其存储在首选项或类似的持久数据中)。

文档中没有提到其他回调钩子,我也从未需要其他回调钩子,因为onPrepareOptionsMenu应该足以完成工作。如果你觉得这不是这种情况,请更具体地回答并提供你特定用例的代码。

但正如我之前所说,文档中没有提到其他回调函数。


-2

-4

这种情况发生在创建时...我想要一个回调函数来通知我创建完成了。(xml被填充,所有项目都可用,super.onCreateOptionsMenu已完成...)。类似于onPostCreate... onPrepareOptionsMenu也不能胜任此工作,因为它仅在按下菜单按钮或在API 11及以上版本中调用invalidate时才会被调用。 - Mak
据我理解,这就是该方法的执行过程。您需要展开菜单,根据需要修改控件等。最终结果是菜单。根据文档,您可以保留并引用它,直到下一次调用onCreateOptionsMenu()。如果您进一步阅读...还有onPrepareOptionsMenu()。如果这些都不起作用,那么您需要更好地解释您的需求。 - jsmith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接