Featured image of post AndroidでActionBarにメニューアイテムを表示させる

AndroidでActionBarにメニューアイテムを表示させる

Twitter ツイート Hatena Bookmark ブックマーク

最近Androidをちょいちょい書いています。 Webアプリしか作ったことなかった僕には結構苦労することが多いです。
てかほとんど初心者というかしろーとみたいな感じで死にたい毎日です。

ツールバーの右上にボタンというか、アイコンを表示して、押したら画面遷移するみたいな事をしたかったときのメモです。 こんなやつです。

手順

  1. resディレクトリにmenuディレクトリを追加する
  2. menu用のxmlファイルを用意する
  3. メニューアイテム(ボタンぽいやつ)を表示させる 1.メニューアイテムを押したときの動作を定義する

resディレクトリにmenuディレクトリを追加する

Androidには「Menu Resource」という機能があります。 https://developer.android.com/guide/topics/resources/menu-resource.html

最初はResourceディレクトリにmenuというディレクトリが無いと思うので「Android Resource Directoryを作成しましょう。

以下のように用意します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// res/menu/menu_test.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >
    <item
        android:id="@+id/menu_tv"
        android:icon="@drawable/cast_ic_notification_on"
        app:showAsAction="ifRoom"
        android:title="Compose">
    </item>

</menu>

menuタグの中で使えるタグはどうやらgroupとitemのようです。 詳しいことはドキュメントを見ましょう。

メニューアイテム(ボタンぽいやつ)を表示させる

xmlを用意するだけではもちろんだめで、読み込ませるための設定が必要になります。 ActivityクラスのonCreateOptionsMenuをオーバーライドします。

1
2
3
4
5
6

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_test, menu);
        return true;
    }

メニューアイテムを押したときの動作を定義する

メニューアイテムの定義はActivityクラスにonOptionsItemSelectedというメソッドをオーバーライドすればいけます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.menu_mail) {
            Intent intent = new Intent(this, NextActivity.class);
            intent.putExtra("hoge", "hoge");
            startActivity(intent);
        }
        return true;
    }

最後に

動くものを作るぐらいだったらAndroidはかなり簡単に作れるのでぜひぜひ試してみてはいかがでしょうか?

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。