android - 如何在 onContextItemSelected() 中检索 ID

标签 android contextmenu

我需要 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.getItemIdonContextItemSelected 读取 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/

相关文章:

android - 触摸事件的 webkitForce 属性 : Finger Pressure feedback. 寻找文档

java - 为 SearchActivity 创建 Intent 时出现 NoClassDefFoundError 异常

java - TextView 到字符串

c# - 如何禁用 Listview 标题上的上下文菜单

android - RecyclerView android 上的 MultichoiceModeListener

c# - 如何响应 ContextMenuStrip 项单击

javascript - 在禁用上下文菜单时将回调分配给 jQuery 右键单击

c++ - Windows Shell 扩展不调用初始化

android - ProgressDialog 没有出现在 onProgressUpdate 方法中

android - 如何使用共享首选项将多个图像保存到 ImageView