Как узнать, какая кнопка открыла контекстное меню? - PullRequest
0 голосов
/ 22 мая 2011

В приложении Soundboard я создал контекстное меню, используя этот код.

public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("Choose an option");
        menu.add(0, v.getId(), 0, "Save as ringtone");
        menu.add(0, v.getId(), 0, "Save as Notification");
        menu.add(0, v.getId(), 0, "Save as Alarm");
        menu.add(0, v.getId(), 0, "Exit Menu");
}


   @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    //    Global.currentsound = info.id;
        if(item.getTitle()=="Save as ringtone"){function1(item.getItemId());}
        else if(item.getTitle()=="Save as Notification"){function2(item.getItemId());}
        else if(item.getTitle()=="Save as Alarm"){function3(item.getItemId());}
        else {return false;}
    return true;
    }

и вызывается на кнопках вот так

Кнопка cmenu = (Кнопка) findViewById (R.id.s1sound1);
registerForContextMenu (CMenu);

Теперь я хочу передать информацию для каждой кнопки функции в коде, чтобы установить звук в соответствии с тем, какая кнопка была нажата. Как бы я сделал это, не создавая отдельное контекстное меню для каждой кнопки, что было бы безумием.

Спасибо

1 Ответ

2 голосов
/ 22 мая 2011

Я думаю, что он хранится в «View v», Button расширяет View, поэтому вы должны его разыграть.Я не уверен, но вы можете проверить, установив точку останова в строке

super.onCreateContextMenu(menu, v, menuInfo);

и проверив отладчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...