AndroidStudio 静的メニューの定義


参考書「作って楽しむプログラミング Androidアプリ超入門」の勉強をまとめていきます。

メニューを定義する

android端末でメニューボタンをタッチすると、設定や、保存などのオプションメニューが表示される。

メニューには、あらかじめ決められた項目を表示する静的メニューと、アプリの状態に応じて変更する動的メニューがある。

今回は静的メニューを作成する

メニューの定義はXMLファイルを作成する
->AndroidStudioでresフォルダを右クリックし、New > Android Resource File

menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
        //item1つに1のメニュー内容を記載  
        //android:id ;選択肢のid
        //android:title ; 表示文字列
    <item android:id="@+id/item1" android:title="設定"></item>
    <item android:id="@+id/item2" android:title="このアプリについて"></item>

</menu>

item属性の中には、app:showAsAction : アクションバーに表示するかどうかもある。

メニューを表示する

オプションメニューを表示するには、画面のタッチやセンサーを利用する場合と同様にイベントに応じて呼び出されるコードを追加する。
しかし、メニューの場合は、新たにイベントリスナーを設定する必要はなく、Activityクラスのメソッド(あらかじめ呼び出されるメソッドが定義されている)をオーバーライドするだけで表示ができる。
->AndroidStudioのmainActivity.kt > Codeメニュー > Overrride Menthods >イベント毎のメソッドを選択

主なメニューのイベント

メニューのイベント 実行されるメソッド タイミング
メニューが作成される時 onCreateOptionMenu 起動時のみ
メニュー表示する時 onPrepareOptionMenu 毎回
メニューの項目を選択した時 onOptionsItemSelected 選択時のみ
メニューが閉じられる時 onOptionMenuClosed 毎回

参考
https://qiita.com/watataku8911/items/5faad0384b54d0c53f6e
https://developer.android.com/guide/topics/resources/menu-resource?hl=ja