2011-05-22 71 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

相关问题