Android onCreateOptions菜单()调用超级

Android onCreateOptions菜单()调用超级,android,android-optionsmenu,Android,Android Optionsmenu,我正在使用选项菜单创建应用程序。我发现很少有这样的例子,但每个人都在使用不同的方法调用onCreateOptionMenu()中的super.onCreateOptionMenu() 不同方式列表: @Override // without super public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.myme

我正在使用选项菜单创建应用程序。我发现很少有这样的例子,但每个人都在使用不同的方法调用
onCreateOptionMenu()
中的
super.onCreateOptionMenu()

不同方式列表:

@Override // without super
public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.mymenu, menu);
  return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  super.onCreateOptionsMenu(menu);
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.mymenu, menu);
  return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.mymenu, menu);
  return super.onCreateOptionsMenu(menu);
}

我应该用什么?

这取决于你想做什么。第一个示例将放置您的菜单,并且仅放置您的菜单。第二个,将添加第一个超级类菜单。最后一个将首先添加您的菜单。但是,请记住,菜单也有一个顺序字段,这将在渲染时考虑

假设您正在扩展一个已经有菜单的活动,但您不希望该菜单出现,而是希望另一个菜单出现。在这种情况下,您将使用第一种方法


另一个示例:您正在扩展具有菜单的活动,并且希望添加另一个菜单。在这种情况下,您可以使用第二种或最后一种方法。

onCreateOptions菜单()的源代码如下所示:

public boolean onCreateOptionsMenu(Menu menu) {
    if (mParent != null) {
        return mParent.onCreateOptionsMenu(menu);
    }
    return true;
}
其中,
mParent
是当前活动的父活动。如果您的活动扩展了android.app.Activity,那么您可以在最后返回
true
,而不用担心调用
super
,因为默认实现将尝试显示基于父活动的菜单,这可能是您不想要的