2012-09-13 73 views
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項目的答案,這取決於未來ContextMenu項目必須填充

回答

4

如何顯示另一個文本菜單當我點擊第一 文本菜單的項目?

我不知道你想有多深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即可爲用戶循環播放一個後臺堆棧)。

+0

in onContextItemSelected flag = false ;.對?? –

+0

@ Archie.bpgc是的,一個簡單的錯誤。 – Luksprog

+0

但是,當我點擊第二個ContextMenu的項目時,它會再次觸發onContextItemSelected並再次打開第二個菜單? –

相關問題