Отличный MenuContextual для каждого ImageButton

Как я могу иметь меню contextual различно для различных ImageButton? Например, чтобы быть конкретной:

Изображение 1 - Меню Contextual 1

Изображение 2 - Меню Contextual 2

...

Так я делаю, чтобы иметь меню contextual в ImageButton:

    registerForContextMenu(icon_cat_accesorios);

}
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.menu_accesorios, menu);
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.prueba1_menu:
                    Intent abc = new Intent(getApplicationContext(), prueba.class);
                    startActivity(abc);
                    return true;
                case R.id.prueba2_menu:
                    Intent def = new Intent(getApplicationContext(), prueba.class);
                    startActivity(def);
                    return true;
                default:
                    return super.onOptionsItemSelected(item);

            }
        }
1
задан 28.01.2017, 00:58
1 ответ

В этом случае ты можешь создавать другой menú (.xml) который ser¦ - в отверстие согласно кнопке, которую ты распределяешь.

introducir la descripción de la imagen aquí

Обе кнопки должны быть зарегистрированными, чтобы открываться menú contextual.

registerForContextMenu(imageButtonA);
registerForContextMenu(imageButtonB);

, открывшись menú contextual, (посредством onCreateContextMenu()) определяет id bot¦n (вид) и menú, что abrirÃ: bot¦n.

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
    super.onCreateContextMenu(menu, v, menuInfo);

    MenuInflater inflater = getMenuInflater();
    if(v.getId() == R.id.ImageButtonA) { //Boton A abre menú definido en menu.xml
        inflater.inflate(R.menu.menu, menu);
    }
    if(v.getId() == R.id.ImageButtonB) {
        inflater.inflate(R.menu.menu2, menu); //Boton B abre menú definido en menu2.xml
    }
}

, Сейчас чтобы определять, что мы откроемся начиная с opci¦n menú, мы это реализуем внутри onContextItemSelected()

public boolean onContextItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.prueba1_menu:
            Intent abc = new Intent(getApplicationContext(), SecondActivity.class);
            startActivity(abc);
            return true;
        case R.id.prueba2_menu:
             Intent def = new Intent(getApplicationContext(), prueba.class);
             startActivity(def);
             return true;
        default:
            return super.onOptionsItemSelected(item);

    }
}
3
ответ дан 24.11.2019, 11:23
  • 1
    Большое спасибо из-за твоего ответа, но у меня есть проблема, нажав на статью, не работает acció n, чем в этом случае serí чтобы идти к activity, который у меня есть плохо в моем có я говорю? @Jorgesys – UserNameYo 28.01.2017, 01:22
  • 2
    Ты должен проверять, что они пойдите, что они выполняют эту acció n esté n контенты в файле .xml menú я отношусь в R.id.prueba1_menu и R.id.prueba2_menu – Jorgesys♦ 28.01.2017, 01:24
  • 3
    Я понимаю то, что ты комментируешь в onCreateOptionsMenu () надувается спесью только menú но в действительности мы требуем санкционировать ids двух меню. Я добавляю эту часть – Jorgesys♦ 28.01.2017, 01:55
  • 4
    Я помечаю тебя это как решенный, так как ты ответил верно на мой вопрос, и я верю в новость, чтобы пробовать решать allí лучше эта проблема, чем ты я прокомментировал, pá sate, если ты можешь: es.stackoverflow.com/questions/46457/… – UserNameYo 28.01.2017, 01:58
  • 5
    @UserNameYo ok любой формы agregué aquí то, что ты комментируешь tambié n для того, чтобы он был полезен другому пользователю. – Jorgesys♦ 28.01.2017, 02:03