我有一个扩展 Activity 的 BaseActivity 类,在其中我有
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// draw menu stuff
}
然后我有其他扩展BaseActivity的类,例如
HelpActivity 扩展 Activity
我以为按照继承的规则,它会自动继承BaseActivty的onCreateOptionMenu调用。它没有,所以我不确定为什么。
但无论如何,在 HelpActivity 我添加了这个:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
这也不起作用(即 Galaxy Nexus 上没有显示菜单)。所以我从字面上复制并粘贴了 BaseActivity 的 onCreateOptionsMenu 调用到 HelpActivity 中,并且成功了。为什么会这样?
编辑:两个注意事项:当我说它不起作用时,我的意思是:我有一个 Galaxy Nexus,并且菜单甚至没有显示在 ActionBar (ActionBarSherlock) 上。当它起作用时,我会得到菜单,包括菜单省略号。
第二:
根据 Android 文档:
提示:如果您的应用程序包含多个活动并且其中一些提供相同的选项菜单,请考虑创建一个除了 onCreateOptionsMenu() 和 onOptionsItemSelected() 方法之外什么都不实现的活动。然后为应该共享相同选项菜单的每个活动扩展此类。这样,您只需管理一组代码来处理菜单操作,并且每个后代类都继承菜单行为。
得到这个:重用选项菜单代码