我正在开发一个应用程序,该应用程序的一个活动中有一个“过滤器按钮”,每次单击它时都会出现一个弹出菜单。特别是这个弹出菜单并不总是相同的,它可能会根据用户在上一个活动中所做的事情而有所不同。
到目前为止,我已经编写了允许应用程序在不同情况下显示不同弹出菜单的部分(效果很好)。现在,我一直在尝试为任何这些情况添加单独的侦听器。
这是我的代码和一些解释:
// method called when the user clicks on "filter_button"
// displays a different popupmenu depending on the value of
// filterVariable defined in a previous activity
private void showPopupMenu(View v) {
Bundle bundle = getIntent().getExtras();
int filterVariable = bundle.getInt("filterVariable");
switch (filterVariable) {
// Case 1: inflates Res/Menu/popupmenu
case 1:
PopupMenu myPopupMenu1 = new PopupMenu(ResultListViewActivity.this, v);
myPopupMenu1.getMenuInflater().inflate(R.menu.popupmenu,
myPopupMenu1.getMenu());
myPopupMenu1.setOnMenuItemClickListener(listener_1);
myPopupMenu1.show();
break;
// Case 2: inflates Res/Menu/popumenu2
case 2:
PopupMenu myPopupMenu2 = new PopupMenu(ResultListViewActivity.this, v);
myPopupMenu2.getMenuInflater().inflate(R.menu.popupmenu2,
myPopupMenu2.getMenu());
myPopupMenu2.setOnMenuItemClickListener(listener_2);
myPopupMenu2.show();
break;
// and so on ...
}
}
我现在要做的是为每个侦听器分配不同的事件。这就是为什么我定义了 listener_1、listener_2 等(现在他们用这个注释“listener_1 无法解析为变量”下划线 - 我告诉你这个是因为我对“变量”有点不安,不是监听器应该不是变量吗?我们可以初始化一个监听器吗?)但我不知道如何将它集成到这种代码中,这是为项目点击分配方法的传统示例(在 Android Developer 上找到) :
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.archive:
// ....
return true;
case R.id.delete:
// ....
return true;
} }
谢谢你的时间!