onContextItemSelected никогда не вызывается с использованием диалога с ListView - PullRequest
4 голосов
/ 25 октября 2010

Я создаю простой диалог с ListView на нем. Я хочу иметь возможность получить доступ к контекстному меню на нем. Вот основной код, который я имею:

<On CreateDialog>
listViewSongs=(ListView) layout.findViewById(R.id.ListView_Songs);
listViewSongs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, drawingPanel.metronome.getSongNames()));

registerForContextMenu(listViewSongs);  

Тогда я просто добавляю простой элемент:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);
 menu.setHeaderTitle("Sample Context Menu");
    menu.add(0, MENU_EDIT_SONG, 0, "Edit");
}

И, наконец, я переопределяю onContextItemSelected:

@Override
public boolean onContextItemSelected(MenuItem item) {
 super.onContextItemSelected(item);
    editSong();
    return true; 
}

Так что моя проблема в том, что когда я долго нажимаю на просмотр списка, у меня появляется контекстное меню, но после выбора единственной опции на нем он никогда не вызывает onContextItemSelected :( Любая помощь?

PS: я также пытался переопределить onMenuItemSelected, onOptionsItemSelected, но я получил тот же результат: \ никогда не вызывался.

Ответы [ 3 ]

6 голосов
/ 25 октября 2010

Я не уверен, почему то, что у вас не работает, но вы можете попробовать вместо этого добавить прослушиватель в ваш пункт меню: setOnMenuItemClickListener . По крайней мере, это скажет вам, что ваш пункт контекстного меню был выбран.

0 голосов
/ 25 октября 2014

Вы должны поместить ВАШ КОД перед вызовом базового метода (т.е. super ())

0 голосов
/ 03 июня 2011

После этой строки:

    registerForContextMenu(listViewSongs); 

введите это:

    listViewSongs.setOnCreateContextMenuListener(this);

И вместо функции onContextItemSelected (элемент MenuItem) используйте это:

@Override
public boolean onMenuItemSelected(int featureId, MenuItem menuItem) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...