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

Обсуждение уроков
CrazyShotz
Сообщения: 8
Зарегистрирован: 17 фев 2016, 09:18

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

Сообщение CrazyShotz » 18 фев 2016, 11:51

driversti писал(а):
CrazyShotz писал(а):То есть String.valueOf(item.getItemId()) преобразовал типы, но не преобразовал значение
Я чего-то не понимаю?! Что вы вкладываете в словосочетание "не преобразовал значение"? Если есть String x = 5, этот метод вернёт int x = 5. Или вам нужно int = "какое-то другое значение отличное от 5"? Объясните что вам нужно
Извиняюсь :) . Я подумал, что getItemId() вернет имя переменной, а не её значение.
P.S.
В таком случае, если у меня id -

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

<item android:id="@+id/menu_add" />
, где я могу получить 'menu_add'? Понимаю, что в разработке врядли пригодится.
P.P.S.
Андроидом занимаюсь чуть больше недели.

driversti
Сообщения: 7
Зарегистрирован: 23 фев 2015, 13:04

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

Сообщение driversti » 18 фев 2016, 12:24

CrazyShotz писал(а): В таком случае, если у меня id -

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

<item android:id="@+id/menu_add" />
, где я могу получить 'menu_add'? Понимаю, что в разработке врядли пригодится.
Вы его сами назначаете. Какое ИД хотите, такое и присваиваете

nalbiy
Сообщения: 2
Зарегистрирован: 11 апр 2016, 16:50

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

Сообщение nalbiy » 11 апр 2016, 16:59

Возникла такая проблема. Может кто подскажет как решить.

Регистрирую контекстное меню для 2 объектов, один из них вложен в другой.

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

elvMain = (ExpandableListView) findViewById(R.id.elvMain);
registerForContextMenu(elvMain);
ll = (LinearLayout)findViewById(R.id.LinearLayout1);
registerForContextMenu(ll);
В зависимости от того нажимаю на список или на общий компонент хочу вызвать 2 разных меню:

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

@Override
    public void onCreateContextMenu(ContextMenu menu, View v,
    		ContextMenuInfo menuInfo) {
    	switch (v.getId()) {
    	case R.id.elvMain:
    		Log.d("myLogs", "elvMain");
    		menu.add(0, CM_CATEG_CREATE, 0, "Добавить категорию");
        	menu.add(0, CM_CATEG_EDIT, 0, "Редактировать категорию");
        	menu.add(0, CM_CATEG_DELETE, 0, "Удалить категорию");
        	break;
    	case R.id.LinearLayout1:
    		Log.d("myLogs", "LinearLayout1");
    		menu.add(0, CM_CATEG_CREATE, 0, "Добавить категорию");
    		break;
    	}
    	//super.onCreateContextMenu(menu, v, menuInfo);
    }
Если нажимаю на фон (LinearLayout1), все нормально меню из 1 пункта, а вот если нажимаю на список меню открывается из всех 4 пунктов, вместо 3. Т.е. при нажатии на список вызывается onCreateContextMenu не только для списка но и для верхнего компонента. Как 2 действие отменить и сделать так, чтоб onCreateContextMenu вызывалось только для текущего компонента и не вызывалось для родительских view?

Sagamor
Сообщения: 1
Зарегистрирован: 31 авг 2016, 12:42

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

Сообщение Sagamor » 31 авг 2016, 12:44

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

bizon
Сообщения: 2
Зарегистрирован: 21 сен 2016, 18:35

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

Сообщение bizon » 21 сен 2016, 18:38

Вопрос. У меня в андроид студио нет папки res/menu, ее нужно создать, открыть или в андроид студио xml menu создается по другому?

bizon
Сообщения: 2
Зарегистрирован: 21 сен 2016, 18:35

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

Сообщение bizon » 21 сен 2016, 18:44

сори нашел. https://www.youtube.com/watch?v=hyI51JeoN4g
показано для чайников как создать

sultanbey
Сообщения: 1
Зарегистрирован: 16 фев 2017, 21:49

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

Сообщение sultanbey » 16 фев 2017, 21:54

На девятой минуте урока есть момент, что пункт меню отображается при вызове меню, а не при установки флажка. Подскажите пожалуйста, правильно ли я делаю, что добавляю android:onClick="chb_click" в Checkbox.
И дальше

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

CheckBox checkBox1,checkBox2;
    MenuItem action_settings;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        checkBox1=(CheckBox)findViewById(R.id.checkBox1);
        checkBox2=(CheckBox)findViewById(R.id.checkBox2);
        action_settings=(MenuItem)findViewById(R.id.action_settings);


    }

public void chb_click(View view)
    {


        if (!checkBox1.isChecked()) action_settings.setVisible(false);
    }
подскажите пожалуйста, где моя ошибка?

Как сделать так, чтобы меню можно было скрыть по снятию флажка, а не при вызове меню?

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

CheckBox checkBox1,checkBox2;
    MenuItem action_settings;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        checkBox1=(CheckBox)findViewById(R.id.checkBox1);
        checkBox2=(CheckBox)findViewById(R.id.checkBox2);
        action_settings=(MenuItem)findViewById(R.id.action_settings);


    }


    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {

        MenuItem menu1=menu.findItem(R.id.action_settings);
        if (!checkBox1.isChecked()) menu1.setVisible(false);


        return super.onPrepareOptionsMenu(menu);
    }
В таком виде работает, но только при вызове меню, а мне нужно чтобы сразу пункт меню при снятии флажка исчезал...

KoPir@It
Сообщения: 3
Зарегистрирован: 28 июл 2015, 12:30

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

Сообщение KoPir@It » 30 июн 2017, 16:35

Sagamor писал(а):У меня не появляется меню, кнопки Меню также нету, хотя среда никаких ошибок не выдает. Помогите понять, в чем проблема?
У меня тоже самое. Пробовал запустить через USB на телефон Fly (Andoid 4.4.4) - там тоже не видно кнопки меню, но через нажатие кнопки под экраном меню работает.
скриншот окна из 14 урока
скриншот окна из 14 урока
ss01.png (132.33 КБ) 7625 просмотров
В предыдущем уроке, появлялась кнопка меню.
скриншот окна из 13 урока
скриншот окна из 13 урока
ss02.png (121.85 КБ) 7625 просмотров
Там layout не редактировался, и код там такой:

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

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="ru.startandroid.p0131menusimple.MainActivity">

    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
Может кто помочь разобраться, почему так и что указывает на то, что надо отображать этот заголовок с кнопкой меню?

jdmichael
Сообщения: 1
Зарегистрирован: 02 авг 2017, 11:33

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

Сообщение jdmichael » 02 авг 2017, 11:37

Sagamor писал(а):У меня не появляется меню, кнопки Меню также нету, хотя среда никаких ошибок не выдает. Помогите понять, в чем проблема?
Вместо public class MainActivity extends Activity
используйте public class MainActivity extends AppCompatActivity

AlexBigB
Сообщения: 1
Зарегистрирован: 07 окт 2017, 23:45

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

Сообщение AlexBigB » 07 окт 2017, 23:55

Почему всё-таки надо вызывать метод предка в методах работы с меню? Есть объяснение или "так принято")) ?

evgeniy-1c
Сообщения: 4
Зарегистрирован: 14 июл 2017, 12:42

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

Сообщение evgeniy-1c » 19 ноя 2018, 15:26

При полном копипасте урока и попытке его запуска на АVD с APi 26, ничего не выводится на экран при нажатии на меню. Когда я запускаю тот же код на API 22, то всё формируется. НО! С небольшими оговорками. Когда программно строишь меню в "onCreateOptionsMenu(Menu menu)", то всё формируется корректно. Если же прописываешь меню в XML файле и потом меню заполняешь по этому файлу, то в любом случае выводится полное меню (все 6 пунктов, не важно установлен или нет чекбокс).

UPD: При изменении id на "R.id.group1", вместо "1" в обработчике "onPrepareOptionsMenu" всё заработало.

XXI Век
Сообщения: 1
Зарегистрирован: 17 ноя 2018, 19:57

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

Сообщение XXI Век » 21 ноя 2018, 10:43

jdmichael писал(а):
Sagamor писал(а):У меня не появляется меню, кнопки Меню также нету, хотя среда никаких ошибок не выдает. Помогите понять, в чем проблема?
Вместо public class MainActivity extends Activity
используйте public class MainActivity extends AppCompatActivity
У меня тоже такая же проблема.
Помогло
Вместо public class MainActivity extends Activity
сделал protected void onCreate(Bundle savedInstanceState)
Честно не знаю почему, но заработало. Может кто и объяснит.

dvpk
Сообщения: 1
Зарегистрирован: 15 фев 2020, 20:30

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

Сообщение dvpk » 15 фев 2020, 20:36

onCreateOptionsMenu - вызывается только при первом показе меню. Создает меню и более не используется. Здесь мы добавляем к меню пункты.
Смущает формулировка, если честно. Создается ощущение, что метод выполняется в момент первого нажатия на кнопку меню, но я проверил в дебагере - метод вызывается во инициализации Activity

tverik
Сообщения: 1
Зарегистрирован: 31 окт 2020, 21:49

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

Сообщение tverik » 03 ноя 2020, 14:20

При попытке создания меню - с использованием xml-файла получаю следующую попытку при запуске приложения:
D:\AndroidStudioStartAndroid\MenuAdv2\app\build\intermediates\packaged_manifests\debug\AndroidManifest.xml:22:
AAPT: error: resource xml/mymenu (aka com.example.menuadv2:xml/mymenu) not found.

Ответить