Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
В этом уроке мы:
- создаем пункты меню c ID
- группируем и сортируем пункты меню
Click here to read this article!
- создаем пункты меню c ID
- группируем и сортируем пункты меню
Click here to read this article!
Последний раз редактировалось damager82 12 июн 2017, 20:58, всего редактировалось 16 раз.
Re: Урок 14. Меню, группы, порядок.
Кстати, вот тут в хелпе еще один из способов создания меню показан http://developer.android.com/guide/topics/ui/menus.html
И вот я так думаю как раз этот способ более оптимальный и желателен к использованию, ибо отделяет само меню(gui) от работы с ним...
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 14. Меню, группы, порядок.
Такой вопрос. Вызывается ли onPrepareOptionsMenu при первом нажатии на меню? Ведь по сути оно не только создается, но и отображается.
Re: Урок 14. Меню, группы, порядок.
Да, это метод вызывается каждый раз, в том числе и при первом нажатии menu.
Re: Урок 14. Меню, группы, порядок.
Возник вопрос - стандартное меню в одной строке содержит только 3 элемента, а есть ли возможность в ряд расположить 4-5 кнопок (menuItem ) , чтобы не образовывался второй ряд меню без использования action bar?
Re: Урок 14. Меню, группы, порядок.
Здравствуйте!
Выполнил все, как написано, а TextView не обновляется! и у вас в уроке результаты работы onOptionsItemSelected не показаны.
Выполнил все, как написано, а TextView не обновляется! и у вас в уроке результаты работы onOptionsItemSelected не показаны.
Re: Урок 14. Меню, группы, порядок.
Странно. Я только что создал новый проект, вставил xml и код и работает. При нажатии на пункт меню на экране появляется текст с данными о нем.Litke писал(а):Здравствуйте!
Выполнил все, как написано, а TextView не обновляется! и у вас в уроке результаты работы onOptionsItemSelected не показаны.
Кто-нить еще делал этот урок? У вас работает?
А результаты onOptionsItemSelected действительно не показаны. Позже добавлю скрин. Спасибо!
Re: Урок 14. Меню, группы, порядок.
Привет. У меня такое было из-за того что я забыл вот такую строчку:Litke писал(а):Здравствуйте!
Выполнил все, как написано, а TextView не обновляется! ...
Код: Выделить всё
tv1 = (TextView)findViewById(R.id.textView1);
Re: Урок 14. Меню, группы, порядок.
Добрый день.
Есть проблемка. Выполняю всё как указано в уроке 13 и уроке 14, но кроме CheckBox и TextView больше ничего не отображается, ни одного пункта меню, без разницы в каком состоянии чекбокс. Думал что-то не дописал, сделал копи-паст и опять ничего. Использую Eclipse- Indigo.
Помогите разобраться))
Есть проблемка. Выполняю всё как указано в уроке 13 и уроке 14, но кроме CheckBox и TextView больше ничего не отображается, ни одного пункта меню, без разницы в каком состоянии чекбокс. Думал что-то не дописал, сделал копи-паст и опять ничего. Использую Eclipse- Indigo.
Помогите разобраться))
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 14. Меню, группы, порядок.
В этом уроке рассказывается про меню, вызываемое по кнопке "Menu". Если её нажать, оно появится ![Улыбается :)](./images/smilies/icon_e_smile.gif)
![Улыбается :)](./images/smilies/icon_e_smile.gif)
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 14. Меню, группы, порядок.
Спасибо огромное, а то уже не знал где проблему искать))KamiSempai писал(а):В этом уроке рассказывается про меню, вызываемое по кнопке "Menu". Если её нажать, оно появится
Re: Урок 14. Меню, группы, порядок.
Могли бы Вы подробнее рассказать о способе создания меню -
http://developer.android.com/guide/topics/ui/menus.html
там не совсем понятно написано для новичка.
(особенно интересует именно создание меню, где используются иконки)
Заранее благодарен!
http://developer.android.com/guide/topics/ui/menus.html
там не совсем понятно написано для новичка.
(особенно интересует именно создание меню, где используются иконки)
Заранее благодарен!
Re: Урок 14. Меню, группы, порядок.
В смысле создание меню из xml-файлов? Да, чет я пропустил в свое время эту фишку.Xgraf писал(а):Могли бы Вы подробнее рассказать о способе создания меню -
http://developer.android.com/guide/topics/ui/menus.html
Товарищи разрабы, может быть кто-нить возьмется и на форуме в разделе Наработки чего-нить наваяет на эту тему? Отпишитесь сюда, если беретесь. Если до выходных желающих не будет, то сам накидаю пример.
Re: Урок 14. Меню, группы, порядок.
На платформе Андроид 4.0.3 (API15) это меню вообще отображается в виде строк.inn_ko писал(а):Возник вопрос - стандартное меню в одной строке содержит только 3 элемента, а есть ли возможность в ряд расположить 4-5 кнопок (menuItem ) , чтобы не образовывался второй ряд меню без использования action bar?
Re: Урок 14. Меню, группы, порядок.
Вообще-то, если придерживаться одной методологии изложения, то как раз таки лучше с этой "фишки" начать знакомство с меню и указать как основной способ, а уже программные способы создания рассмотреть как дополнение. Меню являются частью ресурсов любого приложения (и не только Андроид) и при хорошем стиле программирования они должны именно так и определяться.damager82 писал(а):В смысле создание меню из xml-файлов? Да, чет я пропустил в свое время эту фишку.Xgraf писал(а):Могли бы Вы подробнее рассказать о способе создания меню -
http://developer.android.com/guide/topics/ui/menus.html
Ведь цель любого учебника не только доводить (я бы сказал, не столько) до читателя информацию, но и прививать хорошие стили программирования, заложить так сказать фундамент. Если не прав, можете кинуть в меня камень
![Подмигивает ;)](./images/smilies/icon_e_wink.gif)
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Добавил в урок 14 немного материала на тему xml-меню.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Скажите пожалуйста. Я создал меню из урока только в режиме xml. Проблема в том что, после того как я поставил галочку на расширенное меню оно вылезает и после того как я снимаю галку то оно не переходит в простой режим меню. И еще хотелось бы узнать как можно подключить текст что бы при выборе меню в text view отображалось его название. Может это глупые вопросы но у меня не получилось сделать самому ((( Спасибо.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
А что у вас в методе onPrepareOptionsMenu написано?mexo писал(а):Проблема в том что, после того как я поставил галочку на расширенное меню оно вылезает и после того как я снимаю галку то оно не переходит в простой режим меню.
Я в уроке вывожу в TextView параметры нажатого пункта меню и один из них - название (title).mexo писал(а):И еще хотелось бы узнать как можно подключить текст что бы при выборе меню в text view отображалось его название.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
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);
}
}
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);
}
}
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
XML-компоновка меню отличается от программной только разным кодом в onCreateOptionsMenu.
Если создаем программно, то выполняем meun.add кучу раз и указываем параметры пунктов меню.
Если у нас XML, то MenuInflater читает xml-файл и сам все за нас создает.
Все остальное никак не отличается. И вывод в TextView информации о пункте меню будет работать в обоих случаях.
А вот группу в методе setGroupVisible вы указываете неверно. Вы указываете 1 в качестве ID группы, которую хотите скрыть/показать. Это работало когда мы создавали программно пункты меню и в качестве группы указывали им 1. Но в xml-файле мы указываем для группы другой ID <group android:id="@+id/group1" >. Соответственно я в уроке в конце пишу:
Если создаем программно, то выполняем meun.add кучу раз и указываем параметры пунктов меню.
Если у нас XML, то MenuInflater читает xml-файл и сам все за нас создает.
Все остальное никак не отличается. И вывод в TextView информации о пункте меню будет работать в обоих случаях.
А вот группу в методе setGroupVisible вы указываете неверно. Вы указываете 1 в качестве ID группы, которую хотите скрыть/показать. Это работало когда мы создавали программно пункты меню и в качестве группы указывали им 1. Но в xml-файле мы указываем для группы другой ID <group android:id="@+id/group1" >. Соответственно я в уроке в конце пишу:
Если захотите скрыть группу, выполняете тот же метод setGroupVisible и передаете туда R.id.group1 в качестве ID группы.