@Overridepublic booleanonCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.fm_action_bar_favorite, menu);
mFlowMenuItem=menu.findItem(R.id.fm_menu_favorite);return true;
}public voidshowPopupMenu() {
mPopupMenu= newPopupMenu(mContext, findViewById(R.id.fm_menu_favorite));
Menu menu=mPopupMenu.getMenu();
mPopupMenu.getMenuInflater().inflate(R.menu.fm_menu_favorite, menu);
mPopupMenu.setOnMenuItemClickListener(newOnMenuItemClickListener() {
@Overridepublic booleanonMenuItemClick(MenuItem item) {switch(item.getItemId()) {caseR.id.fm_station_add:
showAddNewStationDialog();break;caseR.id.fm_remove_all:
showRemoveAllStationDialog();break;caseR.id.fm_return:
finish();break;default:break;
}return false;
}
});
mPopupMenu.setOnDismissListener(newOnDismissListener() {
@Overridepublic voidonDismiss(PopupMenu menu) {
mFlowMenuItem.setEnabled(true);
invalidateOptionsMenu();
}
});try{
Field field= mPopupMenu.getClass().getDeclaredField("mPopup");
field.setAccessible(true);
MenuPopupHelper mHelper=(MenuPopupHelper) field.get(mPopupMenu);
mHelper.setForceShowIcon(true);
}catch (IllegalAccessException |NoSuchFieldException e) {
e.printStackTrace();
}
mPopupMenu.show();
}
@Overridepublic boolean onKeyDown(intkeyCode, KeyEvent event) {if (keyCode ==KeyEvent.KEYCODE_MENU){
mFlowMenuItem.setEnabled(false);
showPopupMenu();return true;
}return super.onKeyDown(keyCode, event);
}