我在操作栏中按MenuItem
后,无法访问弹出式菜单中的项目。换句话说,一旦我按下操作栏项目,我不知道如何从弹出菜单中获取项目的ID。
注意:public boolean onMenuItemClick(MenuItem item)
不起作用。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
if(item.getItemId()== R.id.action_settings) {
openPopup();
}
return super.onOptionsItemSelected(item);
}
public void openPopup() {
//find the settings button first
View ActionItemView = findViewById(R.id.action_settings);
PopupMenu popupMenu = new PopupMenu(this, ActionItemView);
popupMenu.inflate(R.menu.popup);
popupMenu.show();
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId())
{
case R.id.action_search:
openSearch();
case R.id.PopupSettings:
openSettings();
}
}
}
答案 0 :(得分:0)
您的应用程序需要首先实现PopupMenu.OnMenuItemClickListener
接口,然后实现该接口中定义的方法onMenuItemClick()
方法,如果您决定使用匿名类,则可以直接在onCreate()
方法同样如此,您也不必使用implements
关键字。
popMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId())
{
case R.id.action_search:
openSearch();
return true; //return true to indicate it was handled, false otherwise
case R.id.PopupSettings:
openSettings();
return true;
default:
return false;
}
});
每次用户选择一个选项时,您必须使用setOnMenuItemClickListener()
在该菜单上设置回调方法,否则弹出窗口根本不会执行任何操作。基本上,必须实现setOnMenuClickListener()
方法来监听弹出菜单的事件。