Yao*_*hen 5 android contextmenu
我为上下文菜单注册了几个按钮
如何知道单击哪个按钮才能显示菜单?
下面是我将要使用的伪代码.我需要做一些与点击哪个按钮相关的事情(我还有几个按钮要声明),我怎么知道上下文菜单是从哪个按钮点击激活的.
编辑:我想我没有说清楚,我想知道哪个按钮被点击以显示菜单.不是单击哪个菜单项.无论如何,我有一个解决方案,我很快就会加入.
谢谢
private static final int SEND_AS_TEXT = Menu.FIRST;
private static final int SEND_AS_IMAGE = Menu.FIRST + 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sendAllBtn = (Button)findViewById(R.id.sendAllBtn);
sendAllBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
registerForContextMenu(v);
openContextMenu(v);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()){
case SEND_AS_TEXT:
//do sth related to the button clicked
break;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(Menu.NONE, SEND_AS_TEXT, SEND_AS_TEXT, "Send As Text");
menu.add(Menu.NONE, SEND_AS_IMAGE, SEND_AS_IMAGE, "Send As Image");
}
Run Code Online (Sandbox Code Playgroud)
Yao*_*hen 12
好的,非常感谢其他人的帮助,这些帮助清除了我对getItemId的怀疑,因为它返回了我分配给菜单项的ID.就我而言,我想知道在创建上下文菜单之前单击了哪个按钮.
为此,我只需创建一个long变量来存储单击的按钮.可以按以下方式获取按钮的ID:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Send As..");
menu.add(Menu.NONE, SEND_AS_TEXT, SEND_AS_TEXT, "Send As Text");
menu.add(Menu.NONE, SEND_AS_IMAGE, SEND_AS_IMAGE, "Send As Image");
btnId = v.getId(); //this is where I get the id of my clicked button
}
Run Code Online (Sandbox Code Playgroud)
后来我只需要参考这个btnId来做任何我想做的事情.
归档时间: |
|
查看次数: |
14854 次 |
最近记录: |