gpt4 book ai didi

Android给一个menuItem添加子菜单,addSubMenu()在哪里?

转载 作者:IT王子 更新时间:2023-10-29 00:00:44 26 4
gpt4 key购买 nike

我想根据我的参数以编程方式将 OptionsMenu 中的子菜单添加到 menuItem。我在 android sdk 中检查了“MenuItem”,没有 addSubMenu() 方法!虽然你可以找到“hasSubMenu()”和“getSubMenu”。

正在考虑在 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!!!???
....

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

最佳答案

有时,Android 的怪异真的很神奇(也很有趣..)。我是这样解决的:

a) 在 XML 中定义一个子菜单占位符,如下所示:

<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 中获取子菜单项,清除它并添加我的子菜单项,如下所示:

    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()在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com