当我通过onListItemClick函数调用新活动时,长按功能(onCreateContextMenu函数)不起作用。如果我在onListItemClick函数中的try catch代码片段内注释代码,onCreateContextMenu就可以正常工作。但我必须将这两种功能用于不同的目的。
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listitems));
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
registerForContextMenu(v);
try{
Intent intent = new Intent(MainActivity.this, Contacts_list.class);
intent.putExtra("GroupName", listitems[position]);
startActivity(intent);
}
catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
menu.add(1, 1, 1, "Details");
menu.add(1, 2, 2, "Delete");
}
答案 0 :(得分:0)
首先,上下文菜单并不是特别受欢迎 - 它是一种旧的UI风格。
话虽如此,使用ListView
的上下文菜单的正确方法是:
致电registerForContextMenu()
,从您活动的ListView
(或片段的onCreate()
)传入 onCreateView()
(副作用:摆脱registerForContextMenu()
}
onListItemClick()
来电
在onContextItemSelected()
中,根据所选的上下文菜单执行任何操作
要在onContextItemSelected()
中找到用户长按该行的菜单,请在传递给getMenuInfo()
的{{1}}上调用MenuItem
,投放该对象成为onContextItemSelected()
,并查看AdapterView.AdapterContextMenuInfo
数据成员:
position