Добавление онклика в подменю? - PullRequest
7 голосов
/ 31 января 2012

У меня есть функция onclick для моего меню, но я не могу понять, какой идентификатор у моего подменю, чтобы я мог сказать подменю, что делать, когда пользователь щелкает по нему. Я создал свое подменю программно, используя код ниже. Поэтому, если кто-то может объяснить мне, как я знаю, какой идентификатор для каждого элемента подменю, я был бы очень признателен.

    @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 Ответ

11 голосов
/ 31 января 2012

Когда вы добавляете

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 Уникальный элементЯ БЫ.Используйте NONE, если вам не нужен уникальный идентификатор.

Идентификатор вашего пункта меню.Это должно быть уникальным.Как вы говорите 15,20,21.Этот идентификатор будет действовать как android:id="@+id/15".Будет использоваться, когда вы собираетесь проверить, по какому элементу щелкнули

например

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