Android的添加子菜单到菜单项,哪里是addSubMenu()? [英] Android adding a submenu to a menuItem, where is addSubMenu()?
问题描述
我想添加一个子菜单我OptionsMenu一个菜单项里面,根据我的参数编程。我在Android SDK中选中菜单项并没有addSubMenu()方法!虽然你可以找到hasSubMenu()和getSubMenu。
I want to add a submenu inside my OptionsMenu to a menuItem, programatically according to my parameters. I've checked "MenuItem" in android sdk and there is no addSubMenu() method!, although you can find "hasSubMenu()" and "getSubMenu".
正想着在onCreateOptionsMenu这样做的:
Was thinking on doing this in onCreateOptionsMenu:
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem mi = menu.getItem(MYITEMID); // << this is defined in my XML optionsMenu
SubMenu subm = mi.addSubMenu(0,1,0,"Map 1"); // no addSubMenu() method!!!???
....
如何创建在code一个菜单项内的子菜单?
How do I create a submenu inside a menuitem in code?
推荐答案
有时候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;
}
}
这篇关于Android的添加子菜单到菜单项,哪里是addSubMenu()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!