アクションバーにメニューを並べる

ActionBar(アクションバー)にはアイコンとタイトルだけでなく、メニューアイコンも並べることが可能です。

メニュー数があまり多くない場合などはアクションバーにメニューアイテムを表示できれば無駄がなくなります。

そこでここではActionBarにメニューを表示する手順をまとめてみました。

メニューを作成する

まずはActivity内のonCreateOptionsMenuメソッドでメニューを作ります。

import com.android.view.Menu;
import com.android.view.MenuItem;

public class MainActivity extends Activity
{

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //各メニューアイテムのID
    final int MENU1_ID = 0, MENU2_ID = 1;
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        MenuItem item1 = menu.add(0, MENU1_ID, 0, R.string.open);
            //アイテムを取得
        MenuItem item2 = menu.add(0, MENU2_ID, 1, R.string.exit);
        item1.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
            //アクションバーに常に表示する。
        item2.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        return super.onCreateOptionsMenu(menu);
    }
}

レイアウトファイルは使わずにメニューを作るので各アイテムのID(menu1_idなど)を直に作っています。

まず、メニューにaddメソッドでmenu1_idなどのidとR.string.menu1などのタイトルを持つアイテムを取得します。0になっているところは無視してかまいません。

そして次にアクションバーにアイテムを表示するためにsetShowAsActionを呼び出しています。このメソッドに「常にアイコンを表示する」ことを表すSHOW_AS_ACTION_ALWAYSを渡すことでアイテムがアクションバーにボタンのように表示されます。

選択されたアイテムの取得

どのアイテムがクリックされたかを知るにはActivityクラスのonOptionsItemSelectedメソッドを使います。次がそのソースコードです。

    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch(item.getItemId()){
        case MENU1_ID:
            Log.i("メニュー", "「open」がクリックされました。");
            return true;
        case MENU2_ID:
            Log.i("メニュー", "「exit」がクリックされました。");
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

このメソッドにはクリックされたアイテムが渡されるのでそのIDに応じた処理をswitch文で実行しています。

以上がアクションバーへのメニューの作成方法です。お疲れ様でした!

関連項目
プライバシーポリシー