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(メニューメニュー)を使用して、オプションメニューを表示するための特定の条件を確認しようとしています。

しかし、私が取得している出力は多少配線されているので、誰かが私が予期しない出力を取得している理由を理解するのを手伝ってくれるなら。

出力:このアクティビティが最初に起動/トリガーされると、(メニューボタンを押すことで)「スライドショーの開始」と「閉じる」の2つのオプションが表示され、オプションメニューの「スライドショーの開始」をクリックするとフリッパーが反転を開始します。メニューボタンを押してオプションメニューがポップアップすると、「閉じる」オプションが1つだけ表示されます。なぜ「スライドショーを停止」が表示されないのか疑問に思います。

どうも..

4

1 に答える 1

0

したがって、答えは次のとおりです。onprepareoptionmenuに非表示にしているメニュー項目に対してonOptionsMenuClosed(Menu menu)および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);



}
于 2012-08-22T11:47:00.130 に答える