处理弹出菜单项单击
Handling popup menu items click
我已经为我的 android 应用程序实现了一个弹出菜单。我为弹出菜单创建了一个 xml,代码也可以正常工作。现在我想不通的是如何处理弹出菜单项的点击。我试过使用 PopupMenu.OnMenuItemClickListener 但没有成功。我该怎么做?
我的弹出菜单代码
ImageButton button = (ImageButton) view.findViewById(R.id.popUp_song);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu(activity, v);
Menu m = popup.getMenu();
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.song_popup, popup.getMenu());
if (audio.getDownload().equals("0")) {
m.removeItem(R.id.add_download);
}
popup.show();
}
});
xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/ToolBarStyle">
<item
android:id="@+id/add_queue"
android:title="Add to queue" />
<item
android:id="@+id/play_next"
android:title="Add to favourite" />
<item
android:id="@+id/add_download"
android:title="Download" />
</menu>
在显示 PopupMenu
之前,为 PopupMenu
添加一个监听器来处理点击事件。
popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(getApplicationContext(),
item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
如果需要根据id点击弹出菜单,正确的做法如下:
popup.setOnMenuItemClickListener(item -> {
if (item.getItemId() == R.id.miEmail) {
Toast.makeText(getApplicationContext(), "Email clicked", Toast.LENGTH_SHORT).show();
} else if (item.getItemId() == R.id.miCall) {
Toast.makeText(getApplicationContext(), "Call clicked", Toast.LENGTH_SHORT).show();
}
return true;
});
我已经为我的 android 应用程序实现了一个弹出菜单。我为弹出菜单创建了一个 xml,代码也可以正常工作。现在我想不通的是如何处理弹出菜单项的点击。我试过使用 PopupMenu.OnMenuItemClickListener 但没有成功。我该怎么做?
我的弹出菜单代码
ImageButton button = (ImageButton) view.findViewById(R.id.popUp_song);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu(activity, v);
Menu m = popup.getMenu();
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.song_popup, popup.getMenu());
if (audio.getDownload().equals("0")) {
m.removeItem(R.id.add_download);
}
popup.show();
}
});
xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/ToolBarStyle">
<item
android:id="@+id/add_queue"
android:title="Add to queue" />
<item
android:id="@+id/play_next"
android:title="Add to favourite" />
<item
android:id="@+id/add_download"
android:title="Download" />
</menu>
在显示 PopupMenu
之前,为 PopupMenu
添加一个监听器来处理点击事件。
popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(getApplicationContext(),
item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
如果需要根据id点击弹出菜单,正确的做法如下:
popup.setOnMenuItemClickListener(item -> {
if (item.getItemId() == R.id.miEmail) {
Toast.makeText(getApplicationContext(), "Email clicked", Toast.LENGTH_SHORT).show();
} else if (item.getItemId() == R.id.miCall) {
Toast.makeText(getApplicationContext(), "Call clicked", Toast.LENGTH_SHORT).show();
}
return true;
});