Урок 14. Menu Android: добавляем иконки и чекбоксы, программно добавляем и скрываем пункты меню | Android Studio

Продолжаем работать с меню андроид

Как программно добавить или скрыть пункты в меню, как сортировать и группировать пункты меню, как добавить иконку и вывести пункт меню на Toolbar или ActionBar, как добавить чекбокс для пункта меню андроид приложения. Познакомимся с методами onPrepareOptionsMenu, setGroupVisible, setCheckable, setChecked, isChecked.
Весь плейлист

Конструкции выбора в языке Java: if…else, switch

Скачать исходный код проекта

Группа взаимопомощи Вконтакте для начинающих ANDROID разработчиков и программистов
Скачать видеоуроки
Поддержите наш проект
#android #AndroidStudio #startandroid

<<предыдущий урок        список уроков      следующий урок>>

Коментарі: 8
  1. Сергей

    Что-то народ разные ответы даёт на Д.З)Может,если Вам не трудно,подскажите хотя бы в каком направлении искать решение?)))Я так понял,нужно методы скрытия пунктов вставить в метод,который всегда работает?В onCreateOptionsMenu вставлял-не срабатывает(.Остался OnCreate. Или же свой метод создать,но какой?))В уроке же подсказка есть, вы же сами сказали))Где только?..не нашёл пока.Про обработку чекбокса ещё уроков не было))Need Help!)))А то голову сломать можно))))

    1. Виталий Непочатов
      admin (автор)

      Смотрите урок про методы жизненного цикла Activity, и найдете ответ на свой вопрос http://www.fandroid.info/urok-23-zhiznennyj-tsikl-aktiviti-activity-lifecycle-uroki-android-studio/

    2. AndreyL
      AndreyL

      Я решил задачу:
      В onPrepareOptionsMenu всё оставляем как в примере.
      В классе (там где объявляются переменные chb) добавить переменную с типом Menu, например Menu optionsMenu;
      В onCreateOptionsMenu необходимо присвоить этой переменной значение menu, то есть optionsMenu = menu;
      Далее необходимо в onCreate добавить setOnClickListener на chb2 и в onClick у него вызывать onPrepareOptionsMenu(optionsMenu)
      chb2.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
      onPrepareOptionsMenu(optionsMenu);
      }
      });

  2. Артем

    Решение ДЗ

    @Override
    public boolean onPrepareOptionsMenu(final Menu menu) {
    menu.setGroupVisible(R.id.group1,checkBox.isChecked());
    checkBox2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    MenuItem itemMail = menu.findItem(R.id.action_mail);
    if (checkBox2.isChecked()){itemMail.setVisible(true); }else itemMail.setVisible(false);
    }
    });
    return super.onPrepareOptionsMenu(menu);
    }

  3. Александр Кусков
    Александр Кусков

    Приветствую всех. Я дошел до 91 урока но так и не понял как сделать домашнее задание этого урока чтобы группы скрывались сразу а не после последующего открытия. Если ктото знает напишите как решить задачу.
    Заранее благодарен.

  4. Andrew

    При открытии примера в Android Studio 1.5.1 пишет ошибку:
    Failed to sync Gradle project ‘P014_AndroidMenu’
    Error:failed to find Build Tools revision 23.0.0 rc2
    Install Build Tools 23.0.0 rc2 and sync project
    а при нажатии на ссылку “Install…” пишет:
    Loading SDK information…
    Ignoring unknown package filter ‘build-tools-23.0.0-preview’Warning: The package filter removed all packages. There is nothing to install.
    Please consider trying to update again without a package filter.

    1. Andrew

      Исправил buildToolsVersion “23.0.0 rc2”
      на buildToolsVersion “23.0.1”
      и всё заработало

  5. Друзья, не работает menu.setGroupVisible(R.id.group1, chk1.isChecked()); прога краш. java.lang.NullPointerException кто знает в чем причина, отпишитесь пожалуйста

Додати коментар