gpt4 book ai didi

android - 如果初始菜单大小为零,则无法单击选项菜单

转载 作者:行者123 更新时间:2023-11-30 03:44:28 24 4
gpt4 key购买 nike

假设我有两项 Activity 。一个称为 MainActivity,另一个称为 PopupActivity。在用户访问 PopupActivity 之后,我想在 MainActivity 中有一个上下文菜单。

    Main [no menu] --> startActivity() / startActivityForResult() 
==> Popup --> back / finish()
==> Main [now has menu].

环境细节:

  • minSDK:10(需要向后兼容)
  • targetSDK: 17
  • 目标设备:GalaxyTab 2.0

如果 MainActivity 至少有一个元素处于开始状态,我可以通过 onPrepareOptionsMenu 添加/删除所需的菜单项。但是如果 MainActiviy 里面有 0 个菜单元素,android 甚至不会在右上角呈现菜单按钮。

我的问题是:

  • 我想念什么?
  • 如何告诉 android 渲染菜单按钮,因为我想向它添加菜单项。

Workaround soultions是行不通的(比如把Activity一分为二等),因为整个问题有点复杂,但核心是这个。我不需要开始状态的菜单项,而我需要第二个状态的菜单项。

ma​​in_menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">    
<item android:id="@+id/menu_add" android:title="@string/add"></item>
<item android:id="@+id/menu_remove" android:title="@string/remove" ></item>
</menu>

MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
if (initState)
{
menu.findItem(R.id.menu_add).setVisible(false);
menu.findItem(R.id.menu_remove).setVisible(false);
} else
{
menu.findItem(R.id.menu_add).setVisible(true);
menu.findItem(R.id.menu_remove).setVisible(true);
}
return super.onPrepareOptionsMenu(menu);
}

最佳答案

首先创建两个菜单。一个用于初始阶段,第二个用于访问 PopupActivity 之后。

将您的 onCreateOptionsMenu() 替换为

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();

if (initState)
inflater.inflate(R.menu.invisible_main_menu, menu);
else
inflater.inflate(R.menu.visible_main_menu, menu);

return true;
}

关于android - 如果初始菜单大小为零,则无法单击选项菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15222930/

24 4 0