gpt4 book ai didi

android如何在子菜单中放置子菜单

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:03 24 4
gpt4 key购买 nike

我想使用此 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.

我不明白我做错了什么 - 谁能给我一些建议?

最佳答案

Android API 级别 15 似乎原生支持此功能。在早期版本中,解决方法是重定向菜单调用。使用您的 xml 示例,对其进行更改,使子子菜单成为常规的隐藏菜单项,并改为添加重定向占位符项:

<item android:id="@+id/india" android:title="India" android:visible="false">
<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/chooseCountry" android:title="Choose Country">
<menu>
<item android:id="@+id/india_redirect" android:title="India" />
<item android:id="@+id/pak" android:title="Pakistan" />
<item android:id="@+id/africa" android:title="South Africa" />
</menu>

卡在 onCreateOptionsMenu( Menu menu ) 中创建的膨胀的 Menu mOptionsMenu 并从您的重定向中打开子菜单,如下所示:

@Override
public boolean onMenuItemSelected( int id, MenuItem item)
{
switch ( item.getItemId() )
{
case R.id.india_redirect:
mSomeView.post( new Runnable()
{
public void run()
{
mOptionsMenu.performIdentifierAction( R.id.india, 0 );
}
} );

return true;
}

return super.onMenuItemSelected( id, item );
}

请注意,对 performIdentifierAction 的调用是从 View 发送到 UI 消息队列的。在旧版本的 Android 上,它可以立即被调用,但在新版本上,它需要一个单独的消息才能工作。

关于android如何在子菜单中放置子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062926/

24 4 0