我正在使用 OptionsMenu 创建应用程序。我发现很少有例子,但是每个人都使用不同的地方在super.onCreateOptionMenu()
方法中调用onCreateOptionsMenu()
。
不同方式的列表:
@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);
}
我应该使用什么?
答案 0 :(得分:31)
这取决于你想做什么。第一个示例将放置您的菜单,只放置您的菜单。第二,将添加第一个超级菜单。最后一个将首先添加您的菜单。但是,请记住,菜单还有一个订单字段,在渲染时将考虑到这一点。
假设您正在扩展已有菜单的活动,但您不希望该菜单出现,而是另一个菜单。在这种情况下,您将使用第一种方法。
另一个例子:您正在扩展具有菜单的活动,并且您想要添加另一个菜单。在这种情况下,您可以使用第二种或最后一种方法。
答案 1 :(得分:3)
onCreateOptionsMenu()
的来源如下:
public boolean onCreateOptionsMenu(Menu menu) {
if (mParent != null) {
return mParent.onCreateOptionsMenu(menu);
}
return true;
}
其中mParent
是当前活动的父活动。如果您的活动扩展android.app.Activity
,那么最后可以返回true
而不用担心调用super
,因为默认实现会尝试显示基于父活动的菜单,你可能不想要。