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 并说嘿,可能有些东西没有在这里管理。
我正在阅读有关 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 并说嘿,可能有些东西没有在这里管理。