今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

特定のメニューを動的に無効化する

Androidアプリを作ってて、res/menu/hoge.xml なんかでメニューを定義したとする。定義したメニューのうちの特定のメニュー項目だけを、特定の条件で無効化したい時がある。
onCreateOptionsMenu()メソッドの中で制御すればいい。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.hoge, menu);
        for (int i = 0; i < menu.size(); i++) {
            MenuItem item = menu.getItem(i);
            if (item.getItemId() == R.id.hoge) {
                boolean b = isHogeMenuEnableCondition();
                item.setEnabled(b);
            }
        }
        return true;
    }