android 如何在子菜单中放置子菜单
我想用这个 xml 添加一个子菜单到现有的子菜单中:
<item android:id="@+id/chooseCountry" android:title="Choose Country">
<menu>
<item android:id="@+id/india" android:title="India" >
<menu>
<item android:id="@+id/blor" android:title="Bangalore" />
<item android:id="@+id/delhi" android:title="Delhi" />
<item android:id="@+id/hyd" android:title="Hyderabad" />
</menu>
</item>
<item android:id="@+id/pak" android:title="Pakistan" />
<item android:id="@+id/africa" android:title="South Africa" />
</menu>
</item>
我得到了这个例外:
08-15 12:57:50.942: ERROR/AndroidRuntime(312): java.lang.UnsupportedOperationException: Attempt to add a sub-menu to a sub-menu.
我不明白我做错了什么 - 有人能给我一些建议吗?
I want to add a submenu to an existing submenu with this xml:
<item android:id="@+id/chooseCountry" android:title="Choose Country">
<menu>
<item android:id="@+id/india" android:title="India" >
<menu>
<item android:id="@+id/blor" android:title="Bangalore" />
<item android:id="@+id/delhi" android:title="Delhi" />
<item android:id="@+id/hyd" android:title="Hyderabad" />
</menu>
</item>
<item android:id="@+id/pak" android:title="Pakistan" />
<item android:id="@+id/africa" android:title="South Africa" />
</menu>
</item>
I am getting but this exception:
08-15 12:57:50.942: ERROR/AndroidRuntime(312): java.lang.UnsupportedOperationException: Attempt to add a sub-menu to a sub-menu.
I do not understand what I am doing wrong - can anybody give me some advice?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这似乎是从 Android API 级别 15 开始原生支持的。在早期版本中,解决方法是重定向菜单调用。使用您的 xml 示例,对其进行更改,以便子子菜单成为常规的隐藏菜单项,并添加重定向占位符项:
保留在
onCreateOptionsMenu( Menu menu )
中创建的膨胀的Menu mOptionsMenu
并从重定向中打开子菜单,如下所示:注意对
performIdentifierAction
的调用code> 从View
发送到 UI 消息队列。在旧版本的 Android 上,可以立即调用它,但在较新的版本上,它需要是单独的消息才能工作。This appears to be natively supported from Android API level 15. On earlier versions, a workaround is to redirect menu calls. Using your xml example, change it so that the sub-sub-menu is a regular hidden menu item, and add a redirect place holder item instead:
Hang on to the inflated
Menu mOptionsMenu
created inonCreateOptionsMenu( Menu menu )
and open the sub-menu from your redirect like this:Note the call to
performIdentifierAction
is posted from aView
to the UI message queue. On old versions of Android it can be called immediately, but on newer versions it needs to be a separate message to work.嗯,显然这不受支持。你必须重新设计你的菜单。
Well, apparently this is not supported. You'll have to redesign your menu.