我最近遇到了一些麻烦,我想我需要你的帮助:)。 我目前正在尝试在对话框顶部显示一个菜单,我知道启动一个新活动可能要容易得多,但这样做会使我存储/传递大量数据。 我设法通过编写自定义对话框并重写oncreateOptionMenu方法来显示optionmenu。 我的问题是我无法获得这些按钮的任何监听器,我试图重写onoptionitemselected方法但没有任何反应。 Ps:我的对话框几乎全屏,所以我看不到活动对话框(我没有找到任何顶部方法)
我很乐意尝试您提供的任何解决方案。
非常感谢
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE,0,Menu.NONE,c.getString(R.string.home));
menu.add(Menu.NONE,4,Menu.NONE,c.getString(R.string.report));
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
if(item.getItemId()==0){
getOwnerActivity().startActivity(new Intent(c,Home.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
}
else
if(l>1)
getOwnerActivity().startActivity(new Intent(c,report.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
else
dismiss();
return true;
}
答案 0 :(得分:1)
也许我的应用程序中的这个小片段可以帮助您:
private static final int REFRESH_ID = Menu.FIRST + 1;
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(0, REFRESH_ID, 0, R.string.menu_refresh).setIcon(R.drawable.and_refresh);
return result;
}
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case REFRESH_ID: {
// Do whatever you want here!
return true;
}
}
return super.onMenuItemSelected(featureId, item);
}
如你所见,我的菜单项有常量。这些项目将Menu.First + n数字作为整数。对于每件商品,我都会数出来。更容易,然后每次更改;) 在onMenuItemSelected中,您可以轻松切换这些常量。 希望有所帮助!