Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение damager82 » 08 сен 2011, 03:00

В этом уроке мы:
- создаем пункты меню c ID
- группируем и сортируем пункты меню


Click here to read this article!
Последний раз редактировалось damager82 12 июн 2017, 20:58, всего редактировалось 16 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 14. Меню, группы, порядок.

Сообщение damager82 » 09 янв 2012, 15:37

Кстати, вот тут в хелпе еще один из способов создания меню показан http://developer.android.com/guide/topics/ui/menus.html
И вот я так думаю как раз этот способ более оптимальный и желателен к использованию, ибо отделяет само меню(gui) от работы с ним...
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 14. Меню, группы, порядок.

Сообщение Mikhail_dev » 11 янв 2012, 08:24

Такой вопрос. Вызывается ли onPrepareOptionsMenu при первом нажатии на меню? Ведь по сути оно не только создается, но и отображается.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 14. Меню, группы, порядок.

Сообщение damager82 » 11 янв 2012, 10:40

Да, это метод вызывается каждый раз, в том числе и при первом нажатии menu.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

inn_ko
Сообщения: 2
Зарегистрирован: 08 фев 2012, 16:37

Re: Урок 14. Меню, группы, порядок.

Сообщение inn_ko » 08 фев 2012, 16:42

Возник вопрос - стандартное меню в одной строке содержит только 3 элемента, а есть ли возможность в ряд расположить 4-5 кнопок (menuItem ) , чтобы не образовывался второй ряд меню без использования action bar?

Litke
Сообщения: 1
Зарегистрирован: 16 фев 2012, 20:21

Re: Урок 14. Меню, группы, порядок.

Сообщение Litke » 16 фев 2012, 20:25

Здравствуйте!
Выполнил все, как написано, а TextView не обновляется! и у вас в уроке результаты работы onOptionsItemSelected не показаны.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 14. Меню, группы, порядок.

Сообщение damager82 » 17 фев 2012, 13:20

Litke писал(а):Здравствуйте!
Выполнил все, как написано, а TextView не обновляется! и у вас в уроке результаты работы onOptionsItemSelected не показаны.
Странно. Я только что создал новый проект, вставил xml и код и работает. При нажатии на пункт меню на экране появляется текст с данными о нем.
Кто-нить еще делал этот урок? У вас работает?

А результаты onOptionsItemSelected действительно не показаны. Позже добавлю скрин. Спасибо!
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Sapfil
Сообщения: 3
Зарегистрирован: 12 фев 2012, 18:58

Re: Урок 14. Меню, группы, порядок.

Сообщение Sapfil » 29 фев 2012, 10:31

Litke писал(а):Здравствуйте!
Выполнил все, как написано, а TextView не обновляется! ...
Привет. У меня такое было из-за того что я забыл вот такую строчку:

Код: Выделить всё

tv1  = (TextView)findViewById(R.id.textView1);
Скорее всего вы тоже забыли что-то добавить.

DreamVan
Сообщения: 3
Зарегистрирован: 27 мар 2012, 15:45

Re: Урок 14. Меню, группы, порядок.

Сообщение DreamVan » 27 мар 2012, 15:50

Добрый день.
Есть проблемка. Выполняю всё как указано в уроке 13 и уроке 14, но кроме CheckBox и TextView больше ничего не отображается, ни одного пункта меню, без разницы в каком состоянии чекбокс. Думал что-то не дописал, сделал копи-паст и опять ничего. Использую Eclipse- Indigo.
Помогите разобраться))

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 14. Меню, группы, порядок.

Сообщение KamiSempai » 27 мар 2012, 17:19

В этом уроке рассказывается про меню, вызываемое по кнопке "Menu". Если её нажать, оно появится :)
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

DreamVan
Сообщения: 3
Зарегистрирован: 27 мар 2012, 15:45

Re: Урок 14. Меню, группы, порядок.

Сообщение DreamVan » 31 мар 2012, 14:16

KamiSempai писал(а):В этом уроке рассказывается про меню, вызываемое по кнопке "Menu". Если её нажать, оно появится :)
Спасибо огромное, а то уже не знал где проблему искать))

Xgraf
Сообщения: 1
Зарегистрирован: 12 май 2012, 14:52

Re: Урок 14. Меню, группы, порядок.

Сообщение Xgraf » 16 май 2012, 15:51

Могли бы Вы подробнее рассказать о способе создания меню -
http://developer.android.com/guide/topics/ui/menus.html
там не совсем понятно написано для новичка.
(особенно интересует именно создание меню, где используются иконки)

Заранее благодарен!

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 14. Меню, группы, порядок.

Сообщение damager82 » 17 май 2012, 12:42

Xgraf писал(а):Могли бы Вы подробнее рассказать о способе создания меню -
http://developer.android.com/guide/topics/ui/menus.html
В смысле создание меню из xml-файлов? Да, чет я пропустил в свое время эту фишку.

Товарищи разрабы, может быть кто-нить возьмется и на форуме в разделе Наработки чего-нить наваяет на эту тему? Отпишитесь сюда, если беретесь. Если до выходных желающих не будет, то сам накидаю пример.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 14. Меню, группы, порядок.

Сообщение AndreyI » 18 май 2012, 12:39

inn_ko писал(а):Возник вопрос - стандартное меню в одной строке содержит только 3 элемента, а есть ли возможность в ряд расположить 4-5 кнопок (menuItem ) , чтобы не образовывался второй ряд меню без использования action bar?
На платформе Андроид 4.0.3 (API15) это меню вообще отображается в виде строк.

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 14. Меню, группы, порядок.

Сообщение AndreyI » 18 май 2012, 20:26

damager82 писал(а):
Xgraf писал(а):Могли бы Вы подробнее рассказать о способе создания меню -
http://developer.android.com/guide/topics/ui/menus.html
В смысле создание меню из xml-файлов? Да, чет я пропустил в свое время эту фишку.
Вообще-то, если придерживаться одной методологии изложения, то как раз таки лучше с этой "фишки" начать знакомство с меню и указать как основной способ, а уже программные способы создания рассмотреть как дополнение. Меню являются частью ресурсов любого приложения (и не только Андроид) и при хорошем стиле программирования они должны именно так и определяться.
Ведь цель любого учебника не только доводить (я бы сказал, не столько) до читателя информацию, но и прививать хорошие стили программирования, заложить так сказать фундамент. Если не прав, можете кинуть в меня камень ;)

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение damager82 » 21 май 2012, 11:17

Добавил в урок 14 немного материала на тему xml-меню.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

mexo
Сообщения: 8
Зарегистрирован: 26 май 2012, 21:45

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение mexo » 29 май 2012, 20:53

Скажите пожалуйста. Я создал меню из урока только в режиме xml. Проблема в том что, после того как я поставил галочку на расширенное меню оно вылезает и после того как я снимаю галку то оно не переходит в простой режим меню. И еще хотелось бы узнать как можно подключить текст что бы при выборе меню в text view отображалось его название. Может это глупые вопросы но у меня не получилось сделать самому ((( Спасибо.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение damager82 » 30 май 2012, 09:40

mexo писал(а):Проблема в том что, после того как я поставил галочку на расширенное меню оно вылезает и после того как я снимаю галку то оно не переходит в простой режим меню.
А что у вас в методе onPrepareOptionsMenu написано?

mexo писал(а):И еще хотелось бы узнать как можно подключить текст что бы при выборе меню в text view отображалось его название.
Я в уроке вывожу в TextView параметры нажатого пункта меню и один из них - название (title).
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

mexo
Сообщения: 8
Зарегистрирован: 26 май 2012, 21:45

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение mexo » 30 май 2012, 09:47

1 - public boolean onPrepareOptionsMenu(Menu menu) {

menu.setGroupVisible(1, knopka.isChecked());
return super.onPrepareOptionsMenu(menu);
}

-------------------------------------------------------------------------
2 - Я же пишу код на XML. Вы привели пример в активити. Можно код для xml?

Вот мой код :

package mexo.test.xmlmenu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.CheckBox;

public class MenuActivity extends Activity {
/** Called when the activity is first created. */

CheckBox knopka;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


knopka = (CheckBox) findViewById(R.id.chkBox);

}


@Override
public boolean onPrepareOptionsMenu(Menu menu) {

// TODO Auto-generated method stub


menu.setGroupVisible(1, knopka.isChecked());
return super.onPrepareOptionsMenu(menu);
}

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.mymenu, menu);

return super.onCreateOptionsMenu(menu);
}
}

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение damager82 » 30 май 2012, 10:12

XML-компоновка меню отличается от программной только разным кодом в onCreateOptionsMenu.

Если создаем программно, то выполняем meun.add кучу раз и указываем параметры пунктов меню.
Если у нас XML, то MenuInflater читает xml-файл и сам все за нас создает.

Все остальное никак не отличается. И вывод в TextView информации о пункте меню будет работать в обоих случаях.

А вот группу в методе setGroupVisible вы указываете неверно. Вы указываете 1 в качестве ID группы, которую хотите скрыть/показать. Это работало когда мы создавали программно пункты меню и в качестве группы указывали им 1. Но в xml-файле мы указываем для группы другой ID <group android:id="@+id/group1" >. Соответственно я в уроке в конце пишу:
Если захотите скрыть группу, выполняете тот же метод setGroupVisible и передаете туда R.id.group1 в качестве ID группы.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Ответить