我有两个菜单项,ID为R.id.start
和R.id.stop
。一开始只有"开始:是可见的。现在我想在选择任何一个时改变它们的可见性。
我尝试通过调用invalidateOptionsMenu()
,然后在onPrepareOptionsMenu(menu)
上更改了可见性。问题是我变空menu
。这可能是因为menu
想要重新创建并且我已经空onCreateOptionsMenu(menu)
而我之前没有创建过它。
当然我可以重新创建它,但不需要它。有没有办法告诉Android调用onPrepareOptionsMenu
但不调用onCreateOptionsMenu
?
答案 0 :(得分:1)
你实际上并不需要onPrepareOptionsMenu我曾经使用它,结果并不那么漂亮。
在你的类中创建一个整数(例如我的被称为激活)并随时更改整数值,然后使选项菜单无效:
onClick(View v)
{
activated=1;
getActivity().invalidateOptionsMenu();
}
现在在您的选项菜单中,检查整数的值,清除菜单然后相应地膨胀(您可以根据需要进行充气):
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
if(activated==1)
{
menu.clear(); //this makes all the menus invisible
//my menu is called secret
getActivity().getMenuInflater().inflate(R.menu.secret, menu);
//you mgiht want to inflate another one here
activated=0;
}
else if(activated==2)
{
//etc
}
else
{
//etc
}
}