且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android的添加子菜单到菜单项,哪里是addSubMenu()?

更新时间:2023-12-06 14:35:34

有时候Android的怪事真是太神奇了(和有趣的..)。我解决了这种方式:

Sometimes Android weirdness is really amazing (and amusing..). I solved it this way:

一)在XML中定义一个子占位符是这样的:

a) Define in XML a submenu placeholder like this:

<item android:visible="true" android:id="@+id/m_area"
   android:titleCondensed="Areas"
   android:title="Areas"
   android:icon="@drawable/restaur"
   android:enabled="true"> 
   <menu>
    <item android:id="@+id/item1" android:title="Placeholder"></item>
   </menu>
</item>

二)获取子菜单项OnCreateOptionsMenu,将其清除,并添加我的子菜单项,像这样的:

b) Get sub menu item in OnCreateOptionsMenu, clear it and add my submenu items, like this:

    public boolean onCreateOptionsMenu(Menu menu) { 
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.mapoptions, menu);

            int idx=0;
            subm = menu.getItem(MYITEM_INDEX).getSubMenu(); // get my MenuItem with placeholder submenu
            subm.clear(); // delete place holder

            while(true)
            {
                anarea = m_areas.GetArea(idx); // get a new area, return null if no more areas
                if(anarea == null)
                    break;
                subm.add(0, SUBAREASID+idx, idx, anarea.GetName()); // id is idx+ my constant
                ++idx;
            }
}