我在我的Activity
上有一个选项菜单,其中有一个名为“启动”的MenuItem
。当选择此MenuItem
时,我希望更改菜单,使其包含一个名为“停止”的MenuItem
。最后,当选择“停止”时,我希望再次更改回“启动”。
这是部分代码,它没有起作用。我在mymenu.xml
中列出了“启动”和“停止”,在创建菜单时应该将“停止”删除:
public class MyActivity extends Activity {
private boolean isStarted = false;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
menu.removeItem(R.id.stop);
inflater.inflate(R.menu.mymenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.start:
isStarted = true;
return true;
case R.id.stop:
isStarted = false;
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(isStarted) {
menu.removeItem(R.id.start);
menu.add(R.id.stop);
} else {
menu.removeItem(R.id.stop);
menu.add(R.id.start);
}
return true;
}
}
getMenuInflater();
后尝试使用menu.removeItem(R.id.stop);
,但它没有起作用。我要么得到两个菜单项,一个是“start”,另一个是“false”(应该是“stop”),要么当我应该显示菜单时,菜单崩溃了。 - JonasremoveItem()
?是在onPrepareOptionsMenu()
中吗? - Octavian HelmonCreateOptionsMenu()
中首次移除了“stop”项目,然后在onPrepareOptionsMenu()
中修改了项目。我现在已将此代码添加到问题中。 - Jonas