是否可以在同一活动中有2个上下文菜单?

时间:2013-03-02 17:02:55

标签: android android-contextmenu

我有TextView的活动和图片图标。我已经通过覆盖onCreateContextMenu()为图像图标创建了上下文菜单。

但是,我还希望为TextView提供另一个上下文菜单。但是,我注意到我已经在使用onCreateContextMenu()

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu, v, menuInfo);  
    menu.setHeaderTitle(getString(R.string.option1));  
    menu.add(0, v.getId(), 0, getString(R.string.option2));  
    menu.add(0, v.getId(), 0, getString(R.string.options3));  
}

因此,是否需要为TextView添加另一个上下文菜单?

2 个答案:

答案 0 :(得分:3)

您可以使用 onCreateContextMenu 中传递的View对象来确定菜单的所有者并相应地填充菜单。

您的代码应如下所示:

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu, v, menuInfo);  
        switch (v.getId()) {
          case R.id.imageIconId:
             menu.setHeaderTitle(getString(R.string.option1));  
             menu.add(0, v.getId(), 0, getString(R.string.option2));   
             menu.add(0, v.getId(), 0, getString(R.string.options3));  
           break;
          case R.id.textViewid:
            // do whatever you want with the menu object.
           break;
}
    }   

答案 1 :(得分:2)

通过该方法传递给您的参数将帮助您分支到不同的东西。

以下是一个例子:

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu, v, menuInfo);
        if( v.equals(yourImgView) ){
            menu.setHeaderTitle(getString(R.string.option1));  
            menu.add(0, v.getId(), 0, getString(R.string.option2));  
            menu.add(0, v.getId(), 0, getString(R.string.options3));  
        }else if ( v.equals(yourTxtView) ) {
            //Do your textView things.
        }

    }