0
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(Menu menu) 检查某些条件以显示选项菜单

但是我得到的输出有点连线,所以如果有人可以帮助我理解为什么我会得到意外的输出。

输出:当此活动第一次启动/触发时,它显示两个选项(通过按下菜单按钮)“开始幻灯片放映”和“关闭”,并在单击选项菜单中的“开始幻灯片放映”后,翻转器开始翻转,这很好。但现在如果我按下菜单按钮并弹出选项菜单,它只显示一个“关闭”选项。想知道为什么它不显示“停止幻灯片”。

谢谢..

4

1 回答 1

0

所以答案是:为隐藏在 onprepareoptionmenu 中的菜单项实现 onOptionsMenuClosed(Menu menu) 和 setVisible=true。

这是溶胶代码:

@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);



}
于 2012-08-22T11:47:00.130 回答