flipper = (ViewFlipper) findViewById(R.id.vFslideshow);
flipper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flipper.showNext();
}
});
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(flipper.isFlipping()){
menu.removeItem(0);
}else{
menu.removeItem(1);
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 0, 0, "start slideshow");
menu.add(0, 1, 1, "stop slideshow");
menu.add(0, 2, 2, "close");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
flipper.setFlipInterval(1000);
flipper.startFlipping();
break;
case 1:
flipper.stopFlipping();
break;
case 2:
this.finish();
break;
}
return true;
}
正如大家们所见,我正在尝试通过使用onPrepareOptionMenu(菜单菜单)来检查某些条件以显示选项菜单
但是我得到的输出有点连线,所以如果有人能帮助我理解为什么我会得到意想不到的输出。
输出:当此活动首次启动/触发时,它会显示两个选项(通过按菜单按钮)“开始幻灯片放映”和“关闭”,然后在选项菜单中单击“开始幻灯片放映”后,翻转开始翻转,这很好。现在,如果我按下菜单按钮并弹出选项菜单,它只显示一个“关闭”选项。想知道为什么它没有显示“停止幻灯片放映”。
Thx ..
答案 0 :(得分:0)
所以答案是:对onprepareoptionmenu中隐藏的菜单项实现onOptionsMenuClosed(菜单菜单)和setVisible = true。
这是sol代码:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(flipper.isFlipping()){
menu.getItem(0).setVisible(false);
}else{
menu.getItem(1).setVisible(false);
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 0, 0, "start slideshow");
menu.add(0, 1, 1, "stop slideshow");
menu.add(0, 2, 2, "close");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
flipper.setFlipInterval(1000);
flipper.startFlipping();
break;
case 1:
flipper.stopFlipping();
break;
case 2:
this.finish();
break;
}
return true;
}
@Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
menu.getItem(0).setVisible(true);
menu.getItem(1).setVisible(true);
}