1
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必须填充的下一个项目

4

1 回答 1

4

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

我不知道你想要多深ContextMenu,但是对于两个级别,你可以有一个布尔标志,在两种情况之间进行选择,这将从onContextItemSelected

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(或 aDialogFragment为用户循环使用后堆栈)。

于 2012-09-13T08:03:11.293 回答