簡単にオプションメニューを表示したい人向け。
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>をネストさせることができる。
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)
}
}