2012年7月29日日曜日

onCreateOptionsMenuとonPrepareOptionsMenuについてメモ

メニューボタンが押された時にオプションメニューを表示するには↓のような感じでonCreateOptionsMenuメソッドをオーバーライドしてメニューを読みこめばいいわけなんだが、


        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                MenuInflater mi = getMenuInflater();
                mi.inflate(R.menu.menu, menu);


                // TODO 自動生成されたメソッド・スタブ
                return super.onCreateOptionsMenu(menu);
        }


ゲームなんかの場合、メニューボタンが押されたらゲームをポーズしたい、ということがある。

それならばと、onCreateOptionsMenuの中にゲームをポーズさせる処理を入れてみても一度しかポーズにならない。調べてみると、onCreateOptionsMenuはそもそも初めてメニューボタンを押した時の一度しか呼び出されないものなのだそうだ。

ならばどうするか、ということだが、onPrepareOptionsMenuというメソッドがあり、こちらはメニューボタンが押されるたびに毎回呼び出される。なので、こいつをオーバーライドしてゲームをポーズさせる処理を入れるとうまくいった。




        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {

                //メニューボタンが押されたらゲームをポーズ状態にする
                mGameView.setMode(GameView.PAUSE);

                // TODO 自動生成されたメソッド・スタブ
                return super.onPrepareOptionsMenu(menu);
        }


今回参考にさせていただいたページはこちら。

0 件のコメント:

コメントを投稿