Android 向 menuItem 添加子菜单,addSubMenu() 在哪里? [英] Android adding a submenu to a menuItem, where is addSubMenu()?

查看:37
本文介绍了Android 向 menuItem 添加子菜单,addSubMenu() 在哪里?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想根据我的参数以编程方式将我的 OptionsMenu 中的子菜单添加到 menuItem.我已经检查了 android sdk 中的MenuItem",但没有 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!!!???
....

如何在代码中的菜单项内创建子菜单?

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:

a) 在 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>

b) 在 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;
            SubMenu 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 向 menuItem 添加子菜单,addSubMenu() 在哪里?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆