上下文菜单项侦听器



>我已经制作了一个上下文菜单,但我无法让 itemListener 工作,因为我不能对所选标题使用开关大小写(因为它仅适用于整数,而不是字符串)。

我想在单击该项目时执行某些操作。虽然我可以用(IF语句)做到这一点。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_overview);
        View view=findViewById(R.id.myView);
        registerForContextMenu(view);
    }
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Context Menu");  
        menu.add(0, v.getId(), 0, "Item 1");  
        menu.add(0, v.getId(), 0, "Item 2");  
    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case 0: Toast.makeText(this, "Item selected 1", Toast.LENGTH_SHORT).show();
            break;
        case 1: Toast.makeText(this, "Item selected 2", Toast.LENGTH_SHORT).show();
            break;
        default:
    }
        return true;
    }

您将选项的两个 ID 设置为同一内容,因此这不起作用。add()方法中的第二个参数应该是唯一的 ID,以便您确定稍后单击的选项。尝试类似操作:

//Class level variables
static int OPTION_ONE = 1;
static int OPTION_TWO = 2;
//Adding the options
menu.add(0, OPTION_ONE, 0, "Item 1");  
menu.add(0, OPTION_TWO, 0, "Item 2"); 
//Determining which one was clicked
switch(item.getItemId()) {
    case OPTION_ONE: 
        Toast.makeText(this, "Item selected 1", Toast.LENGTH_SHORT).show();
        break;
    case OPTION_TWO: 
        Toast.makeText(this, "Item selected 2", Toast.LENGTH_SHORT).show();
        break;
    default:

最新更新