【问题标题】:option item selection in Dialog menu对话框菜单中的选项选择
【发布时间】:2010-07-19 13:18:33
【问题描述】:

我最近遇到了一些麻烦,我想我需要你的帮助 :)。 我目前正在尝试在对话框顶部显示菜单,我知道启动新活动可能会容易得多,但这样做会迫使我存储/传递大量数据。 我设法通过编写自定义对话框并重写 oncreateOptionMenu 方法来显示选项菜单。 我的问题是我无法让任何听众听到这些按钮,我试图重写 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;
}

【问题讨论】:

    标签: android


    【解决方案1】:

    也许我的应用程序中的这个小 sn-p 可以帮助你:

    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 中,您可以轻松切换这些常量。 希望对您有所帮助!

    【讨论】:

    • 您好,谢谢您的回答,但这不是我的问题所在,我会尽量让自己清楚。我有一个大致全屏的对话框。当用户按下菜单按钮时,我想要一个菜单​​。当我设法在自定义对话框上使用 onCreateOptionsMenu 方法获取菜单时。单击按钮时,程序不会通过 onOptionsItemSelected。如果我不在对话框中,您的代码将非常有用。
    • 起初我没有看到你的代码和我的代码之间的区别。事实是我只是在滥用函数 onOptionsItemSelected 而不是 onMenuItemSelected。非常感谢您的帮助!
    • 没问题 :) 希望很快能看到一些应用 ;)
    • 我同意这确实有效,但我不确定为什么。在活动中,您将覆盖onOptionsItemSelected 来处理选项菜单选项。出于某种原因,在对话框中实现自定义菜单时,选择事件被调度到onMenuItemSelected
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多