2012-05-30 70 views
0

嘿,我正在查看Android应用市场上的'Diaro'和'我的日记'应用程序。 这些项目以列表视图显示,长时间点击一个项目时,带有各种选项(如编辑,删除等)的上下文菜单打开。我尝试在我的应用程序中实现相同的功能。但问题出在onContextItemSelected(MenuItem item)我无法得到被点击项目的内容。下面是onContextItemSelected(MenuItem item)代码:上下文菜单不起作用

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item 
      .getMenuInfo(); 
    switch (item.getItemId()) { 
    case R.id.edit: 


     break;v 

      // rest of the codetion 
    } 

    return super.onContextItemSelected(item); 
} 

有人可以告诉我,我怎么能得到项目的ID点击这个函数列表视图?我真的可以在这里使用了一些帮助:)

回答

3

必须为文本菜单注册yourView,像这样:

list = getListView(); 
registerForContextMenu(list); 

,你必须使用onCreateContextMenu用于打造IT

@Override 
public void onCreateContextMenu(ContextMenu contextMenu, 
           View v, 
           ContextMenu.ContextMenuInfo menuInfo) { 
    AdapterView.AdapterContextMenuInfo info = 
      (AdapterView.AdapterContextMenuInfo) menuInfo; 
    selectedWord = ((TextView) info.targetView).getText().toString(); 
    selectedWordId = info.id; 

    contextMenu.setHeaderTitle(selectedWord); 
    contextMenu.add(0, CONTEXT_MENU_EDIT_ITEM, 0, R.string.edit); 
    contextMenu.add(0, CONTEXT_MENU_DELETE_ITEM, 1, R.string.delete); 
} 

你有ListView项在你的contextMenu标题和它的id在selectedWordId

更多查看链接:Detecting which selected item (in a ListView) spawned the ContextMenu (Android)

+0

我没有问题膨胀菜单@Alish,问题是这样的。问题是,如果用户在上下文菜单中单击编辑选项,用户将如何获取由public void onCreateContextMenu点击的项目的rowId (ContextMenu菜单,视图v,ContextMenuInfo menuInfo)功能 – user47

+0

而由id我的意思是在列表视图中的项目编号, – user47

+1

请参阅我的编辑后的答案 – AliSh

0

我有同样的问题一段时间,发现我有onMenuitemselected()在我的活动,这是听上下文菜单项而不是contextitemselected(),希望这会有所帮助。