我是Android SDK(不是java)的新手,我有一两个关于选项菜单的问题。我四处寻找几个教程,包括developer.android。我的问题是文件的命名。在我的res / menu文件夹中菜单xml文档标题为menu.xml时,菜单工作正常。如果我尝试在mainMenu.xml中调用,我会得到一个 mainMenu无法解析或不是字段 错误。 这是我主要活动中的代码,
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainMenu, menu);
return true;
}
上面代码中R.menu.mainMenu中的“mainMenu”用红色下划线(错误) 所以我的问题是我可以将菜单文件命名为我想要的任何内容吗?这种方式似乎限制我每个项目的一个选项菜单,这是不正确的(除非我遗漏了一些东西:)。
答案 0 :(得分:0)
你绝对可以有多个选项菜单:虽然可能有小写限制。使用下划线,你应该全部设置?
编辑:是的,当您尝试构建时会出现此错误消息:
[2011-05-20 12:09:40 - BlAH BLAH BLAH] res\menu\newMenu.xml: Invalid file name: must contain only [a-z0-9_.]
因此存在小写限制。从来不知道。
答案 1 :(得分:-1)
问题是您为XML文件选择的名称。以下是名为someName
的文件的示例输出:
res / menu / someName.xml:文件无效
name:必须仅包含[a-z0-9 _。]
如您所见,您的文件可以包含任何小写字符,数字,下划线或句点。由于您将文件命名为mainMenu
,因此大写M
会导致问题。
一般情况下,对于Android资源来说,camel-case是不可行的,你应该使用snake-case。
另外,关于onCreateOptionsMenu
- 方法的一点说明:
活动的上下文已经为您提供了菜单inflater,您不必创建一个:
@Override
public boolean onCreateOptionsMenu(Menu menu){
this.getMenuInflater().inflate(R.menu.main_menu, menu);
return super.onCreateOptionsMenu(menu);
}