我想在选择contextmenu项目时打开aboutActivity,但是当我从contextmenu中选择任何项目时没有任何反应。
以下是代码:
public boolean onContextItemSelected(MenuItem menu){
// get menu id
int menuid = menu.getItemId();
switch (menuid){
case 0:
Intent intnt2 = new Intent(ListActivity.this,aboutActivity.class);
startActivity(intnt2);
break;
case 1:
Intent intnt3 = new Intent(ListActivity.this,aboutActivity.class);
startActivity(intnt3);
break;
}
return super.onContextItemSelected(menu);
}
我已经在清单文件中声明了aboutActivity,并且我有另一个菜单项(名为“About”),它推出了aboutActivity.Any帮助?
[编辑] 这是onCreateContextMenu函数:
public void onCreateContextMenu(ContextMenu menu,View view,ContextMenuInfo menuInfo){
//checking if the long press is coming from ListView or not
if(view.getId()==R.id.mainlist){
//AdapterView.AdapterContextMenuInfo ainfo= (AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle("Item menu");
menu.add(Menu.NONE,0,0,"Edit");
menu.add(Menu.NONE,1,0,"Delete");
}
}
如何在这里使用R.id,正如raghunandan建议的那样?
答案 0 :(得分:3)
应该是
switch (menuid){
case R.id.id1:
Intent intnt2 = new Intent(ListActivity.this,aboutActivity.class);
startActivity(intnt2);
return true;
case R.id.id2:
Intent intnt3 = new Intent(ListActivity.this,aboutActivity.class);
startActivity(intnt3);
return true;
default:
return super.onContextItemSelected(item);
}
public boolean onContextItemSelected
//返回类型是布尔值
编辑:
switch (menuid){
case 0:
Intent intnt2 = new Intent(ListActivity.this,aboutActivity.class);
startActivity(intnt2);
return true;
....
default:
return super.onContextItemSelected(item);
}
答案 1 :(得分:0)
这有点疯狂,但我会查看菜单项ID。如果他们是0和1,我会感到很惊讶;一般来说,你不应该硬编码数字,而是使用R
类常量。