将onclick添加到子菜单?

时间:2012-01-31 12:43:13

标签: android menu onclick submenu

我的菜单有一个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);
    }
}

1 个答案:

答案 0 :(得分:11)

添加时

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

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