让我们假设,我有两个活动。一个叫做MainActivity,另一个叫做PopupActivity。 在用户访问PopupActivity之后,我希望在MainActivity中有一个上下文菜单。
Main [no menu] --> startActivity() / startActivityForResult()
==> Popup --> back / finish()
==> Main [now has menu].
环境详情:
如果MainActivity在开始状态下至少有一个元素,我可以通过onPrepareOptionsMenu添加/删除所需的菜单项。但是如果MainActiviy里面有0个菜单元素,android甚至不会渲染右上角的菜单按钮。
我的问题是:
变通办法灵魂不起作用(比如将Activity分成两部分等),因为整个问题有点复杂,但它的核心就是这个。我不需要在开始状态下的菜单项,我需要它们在第二个。
main_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);
}
答案 0 :(得分:1)
首先创建两个菜单。一个用于初始阶段,另一个用于访问后的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;
}