0

我想在选择上下文菜单项时打开 aboutActivity,但是当我从上下文菜单中选择任何项目时没有任何反应。

这是代码:

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");
        }
    }

正如 raghunandan 建议的那样,如何在这里使用 R.id?

4

2 回答 2

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);
   }
于 2013-07-29T17:25:21.423 回答
0

这有点疯狂,但我会检查菜单项 ID。如果它们是 0 和 1,我会感到非常惊讶;通常,您不应该对数字进行硬编码,而应使用R类常量。

于 2013-07-29T17:24:35.133 回答