1

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

4

2 回答 2

0

您绝对可以有多个选项菜单:尽管可能存在小写限制。使用下划线,你应该准备好了吗?

编辑:是的,当您尝试构建时会出现此错误消息:

[2011-05-20 12:09:40 - BlAH BLAH BLAH] res\menu\newMenu.xml: Invalid file name: must contain only [a-z0-9_.]

所以有小写限制。从来不知道。

于 2011-05-20T16:03:05.160 回答
-1

问题是您为 XML 文件选择的名称。这是一个名为 的文件的示例输出someName

res/menu/someName.xml:文件无效

名称:必须仅包含 [a-z0-9_.]

如您所见,您的文件可以包含任何小写字符、数字、下划线或句点。由于您命名了 file mainMenu,因此大写字母M会导致问题。

一般来说,camel-case对于Android资源是不可行的,你应该使用snake-case。

另外,关于您的 -method 的一点说明onCreateOptionsMenu: Activity 的上下文已经为您提供了一个 Menu inflater,您不必创建一个:

@Override
public boolean onCreateOptionsMenu(Menu menu){
  this.getMenuInflater().inflate(R.menu.main_menu, menu);
  return super.onCreateOptionsMenu(menu);
}
于 2011-05-20T16:05:11.473 回答