gpt4 book ai didi

java - 无法获取在上下文菜单中单击的 ListView 位置

转载 作者:行者123 更新时间:2023-12-02 06:28:34 26 4
gpt4 key购买 nike

我正在尝试创建一个上下文菜单,并对 ListView 中单击的行执行某些操作,但是每当我尝试使用 info.position

这是我的代码:

listView = (ListView) findViewById(R.id.listView1); // The list view
listView.setOnItemLongClickListener(new OnItemLongClickListener()
{
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int pos, long id) // One Long Click
{
registerForContextMenu(listView); // Registering the context menu
Log.e(TAG, "Long Click!");
return true;
}
});

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.optmenu, menu);
}

@Override
public boolean onContextItemSelected(MenuItem item)
{
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

switch(item.getItemId())
{
case R.id.item3:
RemoveTask(info.position);
break;
}

return true;
}

onContextItemSelected(MenuItem item)中,每当我尝试使用行info.position(suppost返回 ListView 位置的int)时,程序就会崩溃......

(它没有进入RemoveTask,我已经检查过...即使我尝试使用Log打印info.position,它也会使我的应用程序崩溃)...

谢谢!

编辑:我使用的代码与我在此处发布的代码相同,但突然间,菜单甚至不再显示了...

最佳答案

如果您想为上下文菜单注册 View ,则无需为该 View 设置OnLongClickListener。在您的情况下,可以在 Activity 的 onCreate() 方法中为菜单注册 ListView:

@Override
public void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
...
...
listView = (ListView) findViewById(R.id.listView1);
registerForContextMenu(listView);
}

删除 OnLongClickListener 的代码,其余代码应保持不变:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.optmenu, menu);
}

@Override
public boolean onContextItemSelected(MenuItem item)
{
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId())
{
case R.id.item3:
RemoveTask(info.position);
break;
}

return true;
}

关于java - 无法获取在上下文菜单中单击的 ListView 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com