rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

android開発 メニューの設置

2022 Apr. 29.
2022 Apr. 10.
2022 Feb. 14.
2020 Mar. 22.

メニューリソースファイルを読み込み、選択された項目を処理するコード例

メニューリソースファイル作成

FILENAME.xml(ここではmy_option.xml)メニューリソースファイルを作成する。
Android Studioで、プロジェクトのリソース中にmenuディレクトリがなくてもmenu xmlファイルを作成すると自動的に追加される)
その中で、"@+id/myItem1" "@+id/myItem2" "@+id/myItem3" の3つの項目を定義する。

my_option.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">
    <item
        android:id="@+id/myItem1"
        android:title="メニュー1" />
    <item
        android:id="@+id/myItem2"
        android:title="メニュー2" />
    <item
        android:id="@+id/myItem3"
        android:title="メニュー3" />
</menu>

アクティビティ上でメニューがタップされた時に、my_option.xmlの内容を読み込み、選択された項目を処理するjavaコード例
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //my_option.xmlの内容を読み込む
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.my_option, menu);
            // my_option.xmlは、コード上では R.menu.my_option と記述して参照する

        return true;
    }


    /*
     * メニュー各項目処理
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {

            case R.id.myItem1:
                // WRITE YOUR CODE 1 HERE;
                return true;

            case R.id.myItem2:
                // WRITE YOUR CODE 2 HERE;
                return true;

            case R.id.myItem3:
                // WRITE YOUR CODE 4 HERE;
                return true;
        }
        return false;
    }


メニューリソースファイルを利用せず、コードのみで処理するkotlinコード例

解説 Androidアプリにオプションメニューを設定する方法 | mucchinのAndroid戦記

    private val MyMenuID = 0  // メニューID

    // menu設置
    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        super.onCreateOptionsMenu(menu)
        menu.add(0, MyMenuID, 0, "Select File...")
        menu.add(0, MyMenuID + 1, 0, "Config...")
        return true
    }

    // menuアイテムがクリックされた時の処理
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.getItemId()) {
            MyMenuID -> {
                // DO YOUR WORK ON MyMenuID
                return true
            }

            (MyMenuID + 1) -> {
                // DO YOUR WORK ON (MyMenuID + 1)
                return true
            }

        }
        return false
    }