动态处理android中的SubMenu项

时间:2011-06-25 05:38:06

标签: android menu

当我动态创建子菜单项时,很明显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 个答案:

答案 0 :(得分:1)

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