2
我需要onContextItemSelected()
中某个项目的ID。我使用下面的代码:如何检索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;
}
的info.position
VAR无法从onContextItemSelected
与item.getItemId
阅读!该应用程序与日志崩溃:字符串空。你能找到一个错误吗?谢谢!
UPDATE 我改变了代码:
@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();
我更新了代码。但它不起作用。此外,我添加了一些解释。谢谢。 “ – user1756209
@ user1756209:”但是这段代码也不起作用(NotFoundException)“ - 您正在尝试使用带有随机ID的字符串资源显示”Toast“。这是行不通的。如果你的目标是显示一个'Toast',它的消息恰好是一个'int',你需要将这个'int'转换为'String',这样Android不会将你的'int'当作字符串资源ID。此外,您询问“来自帖子的ID”,但您正在检查“info.position”,而不是“info.id”,正如我在答案中指出的那样。 – CommonsWare
非常感谢!我解决了这个问题。 – user1756209