gpt4 book ai didi

android - 如何为不同的弹出菜单设置特定的监听器? (里面的代码)

转载 作者:行者123 更新时间:2023-11-29 15:23:36 24 4
gpt4 key购买 nike

我正在开发一个应用程序,它的一个 Activity 中有一个“过滤器按钮”,每次单击它时都会出现一个弹出菜单。特别的是,这个弹出菜单并不总是相同的,它会根据用户在之前的 Activity 中所做的事情而有所不同。

到目前为止,我已经编写了允许应用程序在不同情况下显示不同弹出菜单的部分(效果很好)。现在,我一直在尝试为这些情况中的任何一种添加单独的监听器。
这是我的代码和一些解释:

// 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 无法解析为变量”下划线 - 我告诉你这是因为我对“变量”有点不满,不是listener 应该是变量以外的东西?我们可以初始化一个 listener 吗?)但我不知道如何将它集成到这种代码中,这是将方法分配给项目点击的传统示例(在 Android Developer 上找到) :

@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.archive:
// ....
return true;
case R.id.delete:
// ....
return true;

} }

感谢您的宝贵时间!

最佳答案

我实际上找到了一种方法来做到这一点,以防有一天它可以帮助某人,我发布了我的代码。它工作完美,并允许为一个初始按钮的监听器分配不同的弹出菜单和不同的事件
在我的例子中,case11 对应于我的第一个过滤模式(例如,餐厅,每个项目都是一种不同类型的餐厅),cass12 是另一种过滤模式(例如夜生活,项目有不同的 Activity ,等等!)。

private void showPopupMenu(View v) {

Bundle bundle = getIntent().getExtras();
int filterVariable = bundle.getInt("filterVariable");

switch (filterVariable) {

case 11:
PopupMenu myPopupMenu11 = new PopupMenu(
ResultListViewActivity.this, v);
myPopupMenu11.getMenuInflater().inflate(R.menu.popup_fastfood,
myPopupMenu11.getMenu());
myPopupMenu11
.setOnMenuItemClickListener(new OnMenuItemClickListener() {

private String filterInterval;
private String filterTitle;

@Override
public boolean onMenuItemClick(
android.view.MenuItem item) {
switch (item.getItemId()) {
case R.id.item11a:
// define your events for item11a
return true;

case R.id.item11b:
//....
return true;

case R.id.item11c:
// ...
return true;

}
return false;
}
});

myPopupMenu11.show();
break;
case 12:
PopupMenu myPopupMenu12 = new PopupMenu(
ResultListViewActivity.this, v);
myPopupMenu12.getMenuInflater().inflate(R.menu.popup_restaurants,
myPopupMenu12.getMenu());
myPopupMenu12
.setOnMenuItemClickListener(new OnMenuItemClickListener() {

@Override
public boolean onMenuItemClick(
android.view.MenuItem item) {
switch (item.getItemId()) {
case R.id.item12a:
// ....
return true;

case R.id.item12b:
// ....
return true;

}
return false;
}
});

myPopupMenu12.show();
break;
}

}

关于android - 如何为不同的弹出菜单设置特定的监听器? (里面的代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15517779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com