簡単にオプションメニューを表示したい人向け。

 AndroidStudioでは、オプションメニューを作成するのにIDEから作成すれば、様々な変更を自動で行ってくれるので、かなり便利になっている。
 メニューの作り方は、まずはプロジェクトツリービューのresフォルダを右クリックしてNewを選択し、Android Resource Directoryを選択する。すると、ウィザードが開くので、Resorce Typeからmenuを選択し、Okボタンを押すとディレクトリが作成される。
 さらに、そのディレクトリの上を右クリックしてNewを選択し、Menu resource fileを選択し、適当なxmlファイル名を入れて作成するとメニューに関連するxmlが自動的に作成される。ここには最初のテンプレが作られているばかりか、デザイナも使えるので便利。

 以下は今回作成したレイアウトファイル。それぞれMenu Itemを区別するためにidを設定している。
 何もitemがないファイルをinflate使用するとアプリが落ちるので注意。<menu>は<menu>に直接ネストすることはできないが、<item></item>の間に<menu>を入れることで<menu>をネストさせることができる。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/itm01"
        android:title="Item" />
    <item
        android:id="@+id/itm02"
        android:title="Item" />
    <item
        android:id="@+id/itm03"
        android:title="Item" ></item>
</menu>
 アクティビティで行っている処理

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

//onCreateOptionsMenuをoverrideするとメニュー作成時に実行されるので、ここでメニューを作成する override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.main, menu) return super.onCreateOptionsMenu(menu) }
//itemをクリックするとイベントが発生する
//itemにクリックされたitemが入ってるので、itemidでそれぞれ区別すれば処理を振り分けることができる override fun onOptionsItemSelected(item: MenuItem?): Boolean { when(item?.itemId) { R.id.itm01 -> { Log.v("nullpo","1") } R.id.itm02 -> { Log.v("nullpo","2") } R.id.itm03 -> { Log.v("nullpo","3") } } return super.onOptionsItemSelected(item) } }