在Activity的onResume()中,是否有任何保证菜单已被创建?
你不能在这里使用onResume。
实际上,当你的应用程序启动时,这是调用顺序:
可以看到,在onResume之后调用了onCreateOptionsMenu(你可以通过重写方法并将其写入控制台来自行验证)。还要注意的是,即使菜单此时未显示给用户,onPrepareOptionsMenu也会在应用程序启动时至少被调用一次。
现在,你没有详细说明你想做什么,但如果你想做的是“运行访问其中一个菜单项的某些代码”,那么你可以使用onPrepareOptionsMenu,因为它在onCreateOptionsMenu之后被调用,并且每当你的应用程序回到前台时都会被调用 - 也就是在onResume之后。根据代码是否需要运行一次或每次运行,你可以在该方法中使用布尔标志(或者如果它只需要运行一次,则将其存储在首选项或类似的持久数据中)。
文档中没有提到其他回调钩子,我也从未需要其他回调钩子,因为onPrepareOptionsMenu应该足以完成工作。如果你觉得这不是这种情况,请更具体地回答并提供你特定用例的代码。
但正如我之前所说,文档中没有提到其他回调函数。
它不是在onCreateOptionsMenu完成后的回调函数,但如果您想在菜单显示之前进行修改,则可以使用onPrepareOptionsMenu进行修改。这只会在onCreateOptionsMenu之后调用(如果Android表现良好,应该如此)。