[英]Dynamically creating a floating context menu with listener for each item?
[英]Context menu Item Listener
我做了一个上下文菜单,但是我不能使itemListener工作,因为我不能为所选标题使用大小写切换(因为它仅适用于Integer,而不适用于字符串)。
我想在单击该项目时做些事情。 虽然我可以用(IF语句)做到这一点。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overview);
View view=findViewById(R.id.myView);
registerForContextMenu(view);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Context Menu");
menu.add(0, v.getId(), 0, "Item 1");
menu.add(0, v.getId(), 0, "Item 2");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case 0: Toast.makeText(this, "Item selected 1", Toast.LENGTH_SHORT).show();
break;
case 1: Toast.makeText(this, "Item selected 2", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
您将两个选项的ID设置为相同,因此这将无法正常工作。 add()
方法中的第二个参数应该是唯一ID,以便您确定以后单击的选项。 尝试类似:
//Class level variables
static int OPTION_ONE = 1;
static int OPTION_TWO = 2;
//Adding the options
menu.add(0, OPTION_ONE, 0, "Item 1");
menu.add(0, OPTION_TWO, 0, "Item 2");
//Determining which one was clicked
switch(item.getItemId()) {
case OPTION_ONE:
Toast.makeText(this, "Item selected 1", Toast.LENGTH_SHORT).show();
break;
case OPTION_TWO:
Toast.makeText(this, "Item selected 2", Toast.LENGTH_SHORT).show();
break;
default:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.