2011-05-22 69 views
0

在我的soundboard應用程序中,我使用此代碼創建了上下文菜單。如何判斷哪個按鈕訪問了上下文菜單

public void onCreateContextMenu(ContextMenu menu, View v, 
       ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     menu.setHeaderTitle("Choose an option"); 
     menu.add(0, v.getId(), 0, "Save as ringtone"); 
     menu.add(0, v.getId(), 0, "Save as Notification"); 
     menu.add(0, v.getId(), 0, "Save as Alarm"); 
     menu.add(0, v.getId(), 0, "Exit Menu"); 
} 


    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    // Global.currentsound = info.id; 
     if(item.getTitle()=="Save as ringtone"){function1(item.getItemId());} 
     else if(item.getTitle()=="Save as Notification"){function2(item.getItemId());} 
     else if(item.getTitle()=="Save as Alarm"){function3(item.getItemId());} 
     else {return false;} 
    return true; 
    } 

,並呼籲這樣

按鈕c菜單=(按鈕)findViewById(R.id.s1sound1)的按鈕;
registerForContextMenu(cmenu);

現在我想將每個按鈕的信息傳遞給代碼中的函數,以根據按下哪個按鈕來設置聲音。我怎麼做,而不會爲每個按鈕創建一個單獨的上下文菜單,這將是瘋狂的。

感謝

+0

該文檔清楚地表明,在'public void onCreateContextMenu(ContextMenu菜單,視圖v, ContextMenuInfo menuInfo)'中接收到的'View v'是正在構建上下文菜單的視圖。你有沒有看到文檔?所以你像'v.getId()'一樣檢查視圖的id,現在你知道哪個按鈕/視圖正在構建你的上下文菜單。 – Varun 2011-05-22 18:42:48

回答

2

我認爲這是存儲在「視圖V」按鈕擴展視圖,所以你要投它。我不確定,但你可以通過在

super.onCreateContextMenu(menu, v, menuInfo); 

行上設置斷點並檢查調試器來檢查。

+0

是的,謝謝,它存儲在V.getId()中。有時Android的文檔可能有點沉重,一旦你研究了一段時間,你的腦就會變成糊狀 - 我的是! – MrCloister 2011-05-23 10:44:45

相關問題