onContextItemSelected从不使用带有ListView的Dialog调用

时间:2010-10-25 17:36:33

标签: android

我正在创建一个带有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; 
}

所以我的问题是,当我长按listview时,我得到了上下文菜单,但在点击它上面的唯一选项后,它从不调用onContextItemSelected :( 有什么帮助吗?

PS:我也尝试覆盖onMenuItemSelected,onOptionsItemSelected,但我得到了相同的结果:\永远不会被调用。

3 个答案:

答案 0 :(得分:6)

我不确定为什么你的功能不起作用,但你可以尝试在menuItem中添加一个监听器:setOnMenuItemClickListener。至少会告诉你正在选择你的上下文菜单项。

答案 1 :(得分:0)

这一行之后:

    registerForContextMenu(listViewSongs); 

输入:

    listViewSongs.setOnCreateContextMenuListener(this);

而不是onContextItemSelected(MenuItem item)函数使用这个:

@Override
public boolean onMenuItemSelected(int featureId, MenuItem menuItem) {

答案 2 :(得分:0)

您必须在调用基本方法之前放置您的代码(即super())