2011-03-14 163 views
2

我有兩個按鈕,每個都有一個上下文菜單,但我不確定如何更改第二個菜單中的菜單項。我的代碼只顯示我的第一個按鈕的項目。如何將不同的菜單項添加到多個上下文菜單?

Button Button1 = (Button) findViewById(R.id.Button1); 
registerForContextMenu(Button1); 

Button Button2 = (Button) findViewById(R.id.Button3); 
registerForContextMenu(Button2); 
} 


@Override 
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
super.onCreateContextMenu(menu, v, menuInfo); 
menu.setHeaderTitle("Select Notification"); 
menu.add(0, v.getId(), 0, "Algebraic"); 
menu.add(0, v.getId(), 0, "Knuckle Train"); 
menu.add(0, v.getId(), 0, "In My Element "); 
menu.add(0, v.getId(), 0, "Let's Get This Party"); 
menu.add(0, v.getId(), 0, "Shmowzow"); 
menu.add(0, v.getId(), 0, "What the Jug"); 
menu.add(0, v.getId(), 0, "Word to Your Mother"); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
if(item.getTitle()=="Algebraic"){function1(item.getItemId());} 
else if(item.getTitle()=="Knuckle Train"){function2(item.getItemId());} 
else if(item.getTitle()=="In My Element"){function3(item.getItemId());} 
else if(item.getTitle()=="Let's Get This Party"){function4(item.getItemId());} 
else if(item.getTitle()=="Shmowzow"){function5(item.getItemId());} 
else if(item.getTitle()=="What the Jug"){function6(item.getItemId());} 
else if(item.getTitle()=="Word to Your Mother"){function7(item.getItemId());} 
else {return false;} 
return true; 
} 

回答

7

比較哪個按鈕被傳入作爲onCreateContextMenu查看:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    if (v == Button1) { 
     menu.setHeaderTitle("Select Notification"); 
     menu.add(0, v.getId(), 0, "Algebraic"); 
     menu.add(0, v.getId(), 0, "Knuckle Train"); 
     menu.add(0, v.getId(), 0, "In My Element "); 
     menu.add(0, v.getId(), 0, "Let's Get This Party"); 
     menu.add(0, v.getId(), 0, "Shmowzow"); 
     menu.add(0, v.getId(), 0, "What the Jug"); 
     menu.add(0, v.getId(), 0, "Word to Your Mother"); 
    } else if (v == Button2) { 
     // stuff for Button2 
    } 
} 
+0

非常感謝,人來完成!這就是訣竅。 – adneal 2011-03-14 04:40:04

0

添加ContextMenu項目針對不同的widget Android是非常容易的。讓我解釋一下如何做到這一點。

例如,您的XML文件中包含兩個包含活動佈局的小部件。

  1. txtnum1
  2. txtnum2

你使用如下代碼

this.registerForContextMenu(txtnum1); this.registerForContextMenu(txtnum2);

然後你重寫了以下方法

設置對他們倆的聽衆
@Override 
public void onCreateContextMenu(ContextMenu mymenu, View v, ContextMenuInfo menuInfo) 

現在讓我們考慮,如果用戶長按txtnum1,要顯示兩個項目方和QUBE的上下文菜單項,如果用戶長按txtnum2要顯示xxxyyy作爲上下文菜單項目。

應該使用如下代碼

@Override 
public void onCreateContextMenu(ContextMenu mymenu, View v, ContextMenuInfo menuInfo) 
{ 
    Toast.makeText(this,String.valueOf(v.getId()),1000).show(); 
    if(v.equals(txtnum1)==true) 
    { 
     mymenu.add(0,1,0,"Square"); 
     mymenu.add(0,2,0,"Qube"); 
    } 
    else if(v.equals(txtnum2)==true) 
    { 
     mymenu.add(0,1,0,"xxx"); 
     mymenu.add(0,2,0,"yyy"); 
    } 
    super.onCreateContextMenu(mymenu, v, menuInfo); 
} 
相關問題