单击第一个ContextMenu的项目时打开另一个ContextMenu

时间:2012-09-13 07:08:18

标签: android contextmenu

registerForContextMenu(validate_button);
@Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenu.ContextMenuInfo menuInfo) {

        menu.add("It's right");
        menu.add("It's wrong");
    }

    @Override
    public boolean onContextItemSelected(android.view.MenuItem item) {
        //i want to show another Context Menu to select next answer
        return true;
    }

当我点击第一个ContextMenu的项目时如何显示另一个ContextMenu

类似于提问者,您可以从ContextMenu项目中选择答案,具体取决于必须填充的下一个ContextMenu项目

1 个答案:

答案 0 :(得分:4)

  

单击第1个项目时如何显示另一个ContextMenu   文本菜单??

我不知道你希望ContextMenu有多深,但是对于两个级别你可以有一个布尔标志,在两种情况之间进行选择,这将从onContextItemSelected更新:< / p>

boolean flag = true;

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenu.ContextMenuInfo menuInfo) {
    if (flag) {
       menu.add("It's right");
       menu.add("It's wrong");
    } else {
       // the second menu
       menu.add("Ha Ha");
    }
}

然后在onContexItemSelected回调中,只需更新标记并发布Runnable再次显示ContextMenu

@Override
public boolean onContextItemSelected(MenuItem item) {
       if (item.getItemId() == theIdOfItemFromSecondContextMenu) {
        // do stuff
        return true;
    }
    // if you pass at this level, then you need to show the second ContextMenu
    flag = false;
    theView.post(new Runnable() {

        @Override
        public void run() {
            theView.showContextMenu();
        }
    });
    return true;
}

无论如何,我会建议不要使用这样的代码,只需使用自定义的Dialog(或DialogFragment来为用户提供一个后台进行循环播放。)