我有一个ListActivity(SherlockListActivity),其内容可以由用户动态更改。当内容更改时,应替换选项菜单。
我learned,而不是onCreateOptionsMenu
我应该使用每次用户选择菜单时(应该)调用的onPrepareOptionsMenu
。
在每次显示菜单之前调用此方法。
我有以下代码:
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
menu.clear();
if (UserOption == UserOption1)
getSupportMenuInflater().inflate(R.menu.menu_option1, menu);
else
getSupportMenuInflater().inflate(R.menu.menu_option2, menu);
return super.onPrepareOptionsMenu(menu);
}
在调试期间只调用一次,所以我总是有相同的菜单。
我应该设置什么才能使其有效?
答案 0 :(得分:3)
创建并准备用于更改的选项菜单及其项目选择方法
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
MenuInflater inflater = getMenuInflater();
if(menuString=="red"){
inflater.inflate(R.menu.red_menu, menu);
}else if(menuString=="green"){
inflater.inflate(R.menu.green_menu, menu);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
return true;
case R.id.help:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
喜欢随时更改菜单调用
String menuString="red or green";
invalidateOptionsMenu();
与其他人一样,如果您希望使用onCreateOptionsMenu
静态菜单,并且想要动态更改其可见性,请使用onPrepareOptionsMenu
以及onCreateOptionsMenu