如何在 Android 中用另一个动态替换菜单
How to replace menu dynamically with another in Android
我有一个 ListActivity (SherlockListActivity
),它的内容可以由用户动态更改。当内容改变时,选项菜单应该被替换。
因为我 learned,我应该使用 onPrepareOptionsMenu
而不是 onCreateOptionsMenu
,每次用户选择菜单时(应该)调用它。
This is called right before the menu is shown, every time it is shown.
我有以下代码:
@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);
}
它在调试期间只被调用一次,所以我总是有相同的菜单。
我应该设置什么让它工作?
创建并准备用于更改的选项菜单及其项目选择方法
@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
我有一个 ListActivity (SherlockListActivity
),它的内容可以由用户动态更改。当内容改变时,选项菜单应该被替换。
因为我 learned,我应该使用 onPrepareOptionsMenu
而不是 onCreateOptionsMenu
,每次用户选择菜单时(应该)调用它。
This is called right before the menu is shown, every time it is shown.
我有以下代码:
@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);
}
它在调试期间只被调用一次,所以我总是有相同的菜单。
我应该设置什么让它工作?
创建并准备用于更改的选项菜单及其项目选择方法
@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