Я создаю приложение «Музыкальный проигрыватель» и хочу отображать имена доступных списков воспроизведения, когда пользователь хочет добавить любую песню в список воспроизведения, в contextMenu
.
Таким образом, весь сценарий таков: когда пользователь долго нажимает на любую песню, отображается
contextMenu
с одним из вариантов с именемAdd to playList
. Когда пользователь щелкает этот пункт меню, отображается другойcontextMenu
с параметрамиCreate a new PlayList
и именами ранее доступных плейлистов (если они есть).
Моментальный снимок:
Теперь проблема в том, чтобы показать имена ранее сохраненных списков воспроизведения, я думаю, что мне нужно динамически генерировать эти элементы меню во время выполнения. Мой код добавления пунктов меню:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if(contextMenuFlag){
menu.setHeaderTitle(songToDisplay);
menu.add(Menu.NONE, PLAY_SONG, Menu.NONE, "Play");
menu.add(Menu.NONE, ADD_TO_PLAY_LIST, Menu.NONE, "Add to Playlist");
}
else{
contextMenuFlag = true;
menu.setHeaderTitle("Add to Playlist");
menu.add(Menu.NONE, CREATE_PLAYLIST, Menu.NONE, "-Create a new Playlist");
menu.add(Menu.NONE, 10, Menu.NONE, "Old Playlists if exists");
}
//Toast.makeText(MainActivity.this,v+"",Toast.LENGTH_SHORT).show();
}
Здесь, используя цикл, я думаю, что могу динамически добавлять пункты меню. Но проблема заключается в обработке событий щелчка по пунктам меню. Код обработки этого события:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case PLAY_SONG: {
songClick(MyView);
}
break;
case ADD_TO_PLAY_LIST: {
contextMenuFlag = false;
songView.post(new Runnable() {
@Override
public void run() {
songView.showContextMenu();
}
});
}
break;
case CREATE_PLAYLIST:{
addToPlayList();
}
break;
}
return super.onContextItemSelected(item);
}
Здесь я использую регистр переключения для каждого идентификатора пункта меню. Итак, мой вопрос: как обрабатывать события щелчка в случае переключения, если я добавил пункты меню во время выполнения?
Пожалуйста, предложите альтернативы, если таковые имеются. Спасибо.