Android: файл меню имен

1

Я новичок в Android SDK (не java), и у меня был вопрос о двух вариантах меню. Я осматриваю несколько учебников, в том числе разработчика. Моя проблема - это именование файлов. Меню прекрасно работает, когда в моей папке 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;
}

"mainMenu" в R.menu.mainMenu в приведенном выше коде подчеркнуто красным цветом (ошибка) Итак, мой вопрос: могу ли я назвать свой файл меню чем-нибудь, что захочу? Этот способ, по-видимому, ограничивает меня одним вариантом меню для проекта, который не может быть прав (если я не пропущу что-то:)

Теги:
android-layout
android-menu

2 ответа

0
Лучший ответ

У вас может быть несколько меню с несколькими вариантами: хотя может быть ограничение в нижнем регистре. Использовать подчеркивания, и все должно быть установлено?

EDIT: yep, это сообщение об ошибке возникает при попытке сборки:

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

Итак, существует ограничение в нижнем регистре. Никогда не знал этого.

  • 0
    Благодарю. Я не могу поверить, что я пропустил это ...
0

Проблема - это имя, которое вы выбрали для своего XML файла. Вот пример-вывод для файла с именем someName:

res/menu/someName.xml: Неверный файл

name: должен содержать только [a-z0-9 _.]

Как вы можете видеть, ваш файл может содержать любые строчные символы, цифры, подчеркивание или период. Поскольку вы назвали свой файл mainMenu, верхний регистр M вызывает проблемы.

В общем, верблюжьей кейс для Android-ресурсов нецелесообразно, вы должны использовать змеиный футляр.

Кроме того, небольшая заметка о вашем onCreateOptionsMenu -методе: Контекст Activity уже предоставляет вам раздутие меню, вам не нужно его создавать:

@Override
public boolean onCreateOptionsMenu(Menu menu){
  this.getMenuInflater().inflate(R.menu.main_menu, menu);
  return super.onCreateOptionsMenu(menu);
}
  • 0
    Большое спасибо за ответ и другие советы :)
  • 0
    Нет проблем. Если вам нравится тот или иной ответ, проголосуйте за него, если кто-то ответил на ваш вопрос и все ясно, пометьте этот ответ как «принятый». Хорошего вам!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню