我需要 onContextItemSelected()
中某个项目的 ID。我使用以下代码:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if (v.getId()==R.id.listView1) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle("Optionen");
menu.add(Menu.NONE, info.position, 0, "Artikel entfernen");
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
final ListView lv = (ListView)findViewById(R.id.listView1);
Toast.makeText(getApplicationContext(), lv.getItemAtPosition(item.getItemId()).toString(), Toast.LENGTH_LONG).show();
return true;
}
无法使用 item.getItemId
从 onContextItemSelected
读取 info.position
var!应用程序崩溃并显示日志:字符串为空。你能找出错误吗?谢谢!
更新 我将代码更改为:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
if (v.getId()==R.id.listView1) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle("Optionen");
menu.add(Menu.NONE, info.position, 0, "delete post");
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
final ListView lv = (ListView)findViewById(R.id.listView1);
//lv.getItemAtPosition(0).toString()
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
Toast.makeText(getApplicationContext(), info.position, Toast.LENGTH_LONG).show();
//Toast.makeText(getApplicationContext(), lv.getItemAtPosition(item.getItemId()).toString(), Toast.LENGTH_LONG).show();
return true;
}
但此代码也不起作用(NotFoundException)。我有一个包含项目的 ListView (R.id.listView1)。如果用户长时间单击某个项目,则会出现上下文菜单。有一个选项“删除帖子”。然后我需要帖子中的 ID 来删除它!
还有其他解决方案吗?
更新2 我解决了这个问题:
Toast.makeText(getApplicationContext(), lv.getItemAtPosition(info.position).toString(), Toast.LENGTH_LONG).show();
最佳答案
info.id
将是与 AdapterView
中给定项目关联的 id
值。
要在 onContextItemSelected()
中获取 info
,请使用:
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
另请注意,上下文菜单越来越不受欢迎,取而代之的是带有操作栏的操作模式(也称为上下文操作栏)。
关于android - 如何在 onContextItemSelected() 中检索 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076170/