将 onclick 添加到子菜单? [英] Adding an onclick to a submenu?

查看:28
本文介绍了将 onclick 添加到子菜单?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

 @Overridepublic boolean onCreateOptionsMenu(菜单菜单){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, "获取最后 10 个数据包");submenu.add(0, Menu.FIRST, Menu.NONE, "获取最后 20 个数据包");inflater.inflate(R.menu.mainmenu, submenu);返回真;}@覆盖public boolean onOptionsItemSelected(MenuItem item){//处理项目选择开关 (item.getItemId()){案例 R.id.viewKML:viewKML();返回真;默认:返回 super.onOptionsItemSelected(item);}}

解决方案

添加时

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

add() 方法的参数排列为Android 菜单添加方法

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".当您要检查点击了哪个项目时将使用它

例如

@Override公共布尔 onCreateOptionsMenu(菜单菜单){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, "获取最后 5 个数据包");submenu.add(0, 15, Menu.NONE, "获取最后 10 个数据包");submenu.add(0, 20, Menu.NONE, "获取最后 20 个数据包");inflater.inflate(R.menu.main_activity_menu, submenu);返回真;}@覆盖公共布尔 onOptionsItemSelected(MenuItem item) {//处理项目选择开关(item.getItemId()){案例10:Toast.makeText(LoginPageActivity.this, "现在"+item.getItemId(), Toast.LENGTH_SHORT).show();返回真;案例15:Toast.makeText(LoginPageActivity.this, "Now = "+item.getItemId(), Toast.LENGTH_SHORT).show();返回真;案例20:Toast.makeText(LoginPageActivity.this, "Now == "+item.getItemId(), Toast.LENGTH_SHORT).show();返回真;默认:返回 super.onOptionsItemSelected(item);}}

I have an onclick function for my menu but I can't figure out what the ID is for my submenu so that I can tell the submenu what to do when the user click on it. I created my submenu programmatically using the code below. So if someone could please explain to me how I know what the id is for each item of the submenu I'd greatly appreciate it.

    @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);
    }
}

解决方案

When you are adding

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

The parameter arrangement for add() method is Android Menu Add Method

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

itemId Unique item ID. Use NONE if you do not need a unique ID.

Is the id of your menu item. It should be unique. Like you say 15,20,21. This id will act like android:id="@+id/15". Is will be used when you are going to check which item is clicked

e.g

@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);
        }
    }

这篇关于将 onclick 添加到子菜单?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆