Створення меню в XML, Фанклуб користувачів андроїд
У попередніх програмах ми створювали для вікон діяльності схеми розмітки у вигляді XML-документів, що зберігаються в каталозі res/layouts/. Аналогічно можна визначати меню в XML-документах та завантажувати їх у програму. Файли меню зберігаються в окремому каталозіres/menu/.
У XML-файлі меню є три елементи:
- - Кореневий елемент файлу меню;
- - Контейнерний елемент, що визначає групу меню;
- - Елемент, що визначає пункт меню.
Елементи і можуть бути дочірніми елементами. Звичайно, кореневий вузол будь-якого файлу має бути елементом меню.
Як приклад програми із завантаженням меню з XML ми визначимо те саме меню зі значками, створене нами раніше. Створимо в Eclipse новий проект і в діалозі Create New Project заповнимо поля:
- Project пате - IconMenuApp;
- Application пате - Load Menu from resource;
- Package пате - com. samples. resmenuxmi;
- Create Activity - ResMenuXmlActivity.
УXML-файлі, який визначатиме меню, створимо п'ять пунктів меню -Open, Save, Edit, Help таExit і збережемо цей файл під ім'ям>options.xml у каталозіres/menu/ проекту. Повний код файлуoptions.xml представлений у лістингу.
Файл меню options.xml
Файл розмітки для діяльності програми з єдиним віджетом TextView наведено у лістингу.
Файл розмітки main.xml
Завантаження меню з ресурсу дещо відрізняється від створення меню в коді програми. У коді методу зворотного викликуonCreateOptionsMenu() достатньо отримати посилання на ресурс XML файлу, що визначає меню:
При завантаженні меню з файлу XML ідентифікатори меню визначають у файлі,і, отже, немає необхідності оголошувати їх у коді програми. Укласі R будуть згенеровані константи, яких можна звертатися в коді, як і ідентифікаторам інших ресурсів. Ці ідентифікатори можна використовувати у методі зворотного викликуonOptionsitemSelected(), наприклад, таким чином:
Повний код класу головної діяльності ResMenuXmlActivity показаний у лістингу.
Файл класу діяльності ResMenuXml Activity Java
Скомпілюйте та запустіть проект на виконання. Зовнішній вигляд програми із завантаженням меню з файлу XML не відрізняється від меню, створеного в коді програми.