0

我正在阅读关于 OptionsMenus 和 ActionsBars 的 google android 页面上的帮助部分:http: //developer.android.com/guide/topics/ui/actionbar.html 并且他们包含一个注释,说明当使用片段时,活动的 onOptionsItemSelected 方法将在调用片段之前被调用,它们通过使其必须包含默认值:在 onOptionsItemSelected 方法定义的末尾返回 super.onOptionsItemSelected。他们包括以下方法示例,但没有说明这是否是 Activity 定义或 Fragment 定义中的示例。我对此有点困惑,想要求澄清。基于“超级”的使用,它表明它在片段内部被传递给 Activity,但这与他们的声明不同意,即首先调用 Activity。如果它是 Activity 中的一个示例,并且“super”是指父 Application 类,那么我不清楚它是如何被引用回片段的。任何澄清说明将不胜感激。

@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);
    }
}
4

1 回答 1

0

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

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

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

所以:你的活动覆盖超类方法来管理前两个菜单项,然后调用超类方法来保持运行并说嘿,这里可能有一些东西没有被管理。

于 2015-01-03T20:52:02.507 回答