簡體   English   中英

單擊第一個ContextMenu的項目時打開另一個ContextMenu

[英]Open another ContextMenu when clicked on first ContextMenu's Item

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項目

當我點擊第一個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 (或DialogFragment來為用戶提供一個后台循環)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM