从oncontextitemselected获取视图ID

Yao*_*hen 5 android contextmenu

我为上下文菜单注册了几个按钮

如何知道单击哪个按钮才能显示菜单?

下面是我将要使用的伪代码.我需要做一些与点击哪个按钮相关的事情(我还有几个按钮要声明),我怎么知道上下文菜单是从哪个按钮点击激活的.

编辑:我想我没有说清楚,我想知道哪个按钮被点击以显示菜单.不是单击哪个菜单项.无论如何,我有一个解决方案,我很快就会加入.

谢谢

private static final int SEND_AS_TEXT = Menu.FIRST;
private static final int SEND_AS_IMAGE = Menu.FIRST + 1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        sendAllBtn = (Button)findViewById(R.id.sendAllBtn);
        sendAllBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        registerForContextMenu(v);
        openContextMenu(v);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        switch(item.getItemId()){
        case SEND_AS_TEXT:
            //do sth related to the button clicked
            break;

        }
        return super.onContextItemSelected(item);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(Menu.NONE, SEND_AS_TEXT, SEND_AS_TEXT, "Send As Text");
        menu.add(Menu.NONE, SEND_AS_IMAGE, SEND_AS_IMAGE, "Send As Image");
    }
Run Code Online (Sandbox Code Playgroud)

Yao*_*hen 12

好的,非常感谢其他人的帮助,这些帮助清除了我对getItemId的怀疑,因为它返回了我分配给菜单项的ID.就我而言,我想知道在创建上下文菜单之前单击了哪个按钮.

为此,我只需创建一个long变量来存储单击的按钮.可以按以下方式获取按钮的ID:

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Send As..");
    menu.add(Menu.NONE, SEND_AS_TEXT, SEND_AS_TEXT, "Send As Text");
    menu.add(Menu.NONE, SEND_AS_IMAGE, SEND_AS_IMAGE, "Send As Image");
    btnId = v.getId(); //this is where I get the id of my clicked button
}
Run Code Online (Sandbox Code Playgroud)

后来我只需要参考这个btnId来做任何我想做的事情.