
AndroidでActionBarにメニューアイテムを表示させる
October 6, 2016,
tags:
android
java
最近Androidをちょいちょい書いています。
Webアプリしか作ったことなかった僕には結構苦労することが多いです。
てかほとんど初心者というかしろーとみたいな感じで死にたい毎日です。
ツールバーの右上にボタンというか、アイコンを表示して、押したら画面遷移するみたいな事をしたかったときのメモです。 こんなやつです。
手順
- resディレクトリにmenuディレクトリを追加する
- menu用のxmlファイルを用意する
- メニューアイテム(ボタンぽいやつ)を表示させる 1.メニューアイテムを押したときの動作を定義する
resディレクトリにmenuディレクトリを追加する
Androidには「Menu Resource」という機能があります。 https://developer.android.com/guide/topics/resources/menu-resource.html
最初はResourceディレクトリにmenuというディレクトリが無いと思うので「Android Resource Directoryを作成しましょう。
menu用のxmlファイルを用意する
以下のように用意します。
// 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
をオーバーライドします。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_test, menu);
return true;
}
メニューアイテムを押したときの動作を定義する
メニューアイテムの定義はActivityクラスにonOptionsItemSelected
というメソッドをオーバーライドすればいけます。
@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はかなり簡単に作れるのでぜひぜひ試してみてはいかがでしょうか?