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が、2つのレベルでは、ブールフラグを使用して、2つのケースから選択できます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(またはDialogFragmentユーザーが循環するためのバックスタックを持つために)。

于 2012-09-13T08:03:11.293 に答える