Android:命名菜单文件

时间:2011-05-20 15:59:24

标签: android android-layout android-menu

我是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”用红色下划线(错误) 所以我的问题是我可以将菜单文件命名为我想要的任何内容吗?这种方式似乎限制我每个项目的一个选项菜单,这是不正确的(除非我遗漏了一些东西:)。

2 个答案:

答案 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);
}