Android:无法在选择上下文菜单项时启动活动

时间:2013-07-29 17:21:24

标签: android

我想在选择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建议的那样?

2 个答案:

答案 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类常量。