Android - 关于片段选项菜单调用顺序的问题

Android - Ques on order in which Fragment Options Menu called

我正在阅读有关 OptionsMenus 和 ActionsBars 的 Google android 页面上的帮助部分: http://developer.android.com/guide/topics/ui/actionbar.html 他们还附上了一条注释,指出在使用片段时,活动的 onOptionsItemSelected 方法将在调用片段之前被调用,他们需要在 onOptionsItemSelected 的末尾包含默认值:return super.onOptionsItemSelected方法定义。他们包括以下方法示例,但没有说明这是 Activity 定义还是 Fragment 定义中的示例。我对此有点困惑,想要求澄清。基于 "super" 的使用,这表明它在片段内部被传递到 Activity,但这与他们关于 Activity 首先被调用的说法不一致。如果它是 Activity 中的一个示例并且 "super" 指的是父应用程序类,那么我不清楚它是如何被引用回片段的。任何澄清说明将不胜感激。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {
        case R.id.action_search:
            openSearch();
            return true;
        case R.id.action_compose:
            composeMessage();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

您的 MyActivity 扩展了 Activity 并因此继承了它的方法,其中之一是您正在覆盖的 onOptionsItemSelected()

调用 super.whatever() 说:我想从超类 Activity 覆盖此方法 whatever(),但仍然 运行 那里定义的方法。基本上,您正在向该方法添加一些内容。例如,这就是您通常做的 onCreate

在这种情况下,返回 false 意味着,如果 ID 与上述两个不同,我们就完成了 - 菜单管理可以到此为止。显然我们不是,因为我们希望片段接收到它的调用。

所以:您的 activity 重写超类方法来管理前两个菜单项,然后调用超类方法来保留 运行ning 并说嘿,可能有些东西没有在这里管理。