динамически обрабатывать элементы SubMenu в Android - PullRequest
0 голосов
/ 25 июня 2011

Поскольку я создаю элементы подменю динамически, очевидно, что индекс MenuItems будет только динамическим.так вот, что я столкнулся с проблемой.

пока я успешно создал пункты меню динамически внутри onCreateOptionsMenu функция

SubMenu switchMenu = menu.addSubMenu("My Menu");

for(int i=0;i<myList.getListSize();i++){
 switchMenu.add(FILE, NEW_MENU_ITEM+i, 0, myList.get(i).data);  
}

Теперьпроблема возникает, когда элементы меню выбираются внутри onOptionsItemSelected

//get the the selected index 
int selectedMenuIndex = item.getItemId();    

// Pass it to a function in another activity 
myList.myActivity.switch(selectedMenuIndex);

//Finishing the current activity and loads the previously selected
finish();

Когда загружается родительское меню и я щелкаю по нему, чтобы получить подменю, android автоматически выбирает первое подменюв списке, т. е. index = 0, и немедленно запускает приведенный выше код, и он не ждет загрузки остальной части подменю и позволяет пользователю выбирать из элемента подменей, который я создал динамически.

1 Ответ

1 голос
/ 12 августа 2011

Сделайте это в вашем OnOptionsItemSelected

    public boolean onOptionsItemSelected(MenuItem item)
    {

     if( (item.getItemId() & NEW_MENU_ITEM ) == NEW_MENU_ITEM)  // check if its a sub menu ID
     {

       switch(item.getItemId() - NEW_MENU_ITEM)
       {
          case 0: // first sub menu option
          {
             DoSubMenu1();
             break;
          }

          case 1:: // second sub menu option
          {
             DoSubMenu2();
             break;
          }

          // and so on ..................
        }

        return;
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...