【问题标题】:Adding an onclick to a submenu?将 onclick 添加到子菜单?
【发布时间】:2012-02-23 04:21:43
【问题描述】:

我的菜单有一个 onclick 功能,但我不知道我的子菜单的 ID 是什么,以便我可以告诉子菜单在用户单击它时要做什么。我使用下面的代码以编程方式创建了我的子菜单。因此,如果有人可以向我解释我如何知道子菜单中每个项目的 id 是什么,我将不胜感激。

    @Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.mainmenu, menu);

    SubMenu submenu = menu.addSubMenu(0, Menu.FIRST, Menu.NONE, "Preferences");
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 5 Packets");
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 10 Packets");
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 20 Packets");
    inflater.inflate(R.menu.mainmenu, submenu);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    // Handle item selection
    switch (item.getItemId())
    {
        case R.id.viewKML:
            viewKML();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

【问题讨论】:

    标签: android menu onclick submenu


    【解决方案1】:

    添加时

    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 5 Packets");
    

    add()方法的参数排列为Android Menu Add Method

    public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title)
    

    itemId 唯一的项目 ID。如果您不需要唯一 ID,请使用 NONE。

    是您的菜单项的 ID。它应该是独一无二的。就像你说的 15,20,21。此 ID 的行为类似于 android:id="@+id/15"。当您要检查单击了哪个项目时,将使用 is

    例如

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.main_activity_menu, menu);
    
            SubMenu submenu = menu.addSubMenu(0, Menu.FIRST, Menu.NONE, "Preferences");
            submenu.add(0, 10, Menu.NONE, "Get Last 5 Packets");
            submenu.add(0, 15, Menu.NONE, "Get Last 10 Packets");
            submenu.add(0, 20, Menu.NONE, "Get Last 20 Packets");
            inflater.inflate(R.menu.main_activity_menu, submenu);
    
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle item selection
            switch (item.getItemId()) {
            case 10:
                Toast.makeText(LoginPageActivity.this, "Now "+item.getItemId(), Toast.LENGTH_SHORT).show();
                return true;
            case 15:
                Toast.makeText(LoginPageActivity.this, "Now = "+item.getItemId(), Toast.LENGTH_SHORT).show();
                return true;
            case 20:
                Toast.makeText(LoginPageActivity.this, "Now == "+item.getItemId(), Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
        }
    

    【讨论】:

    • 完美运行。谢谢@Arslan。经过长时间的搜索找到了这个。
    • 你能帮我改变子菜单项的颜色吗?我搜索了 ABS 的代码,但无法得到它。 @RandomlyKnighted?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多