【Android Studio】オプションメニューの作成【日本語】

AndroidStudioでオプションメニューを作成してみます。
アプリによくある画面右上にある「…」をクリックすることで表示されるやつです。

 

他のプログラミングに関する記事はこちら

スポンサーリンク


 

【とりあえず実装してみる】

1.resフォルダを右クリック>New>Android Resource Fileをクリックする

 

2.File nameを「menu」、Resource typeを「Menu」にしてOKをクリックする

 

3.作成したmenuフォルダを右クリック>New>Menu resource fileをクリックする

 

4.File nameを「option_menu」にして「OK」をクリックする

 

5.作成したoption_menu.xmlを開き、Textタブを表示して、以下のようなコードを入力する(コードは後述)

 

コードはこんな感じ。

<?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/test1"
        android:title="テスト1" />
    <item
        android:id="@+id/test2"
        android:title="テスト2" />
</menu>

itemタブを増やせば選択肢を増やすことが可能。

idはクリックされた時の判別に使用するため指定しておいた方がよい。

titleは表示名。

 

6.アクティビティークラス内に以下の9~14行目の記述を追加する

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // オプションメニューを作成する
        getMenuInflater().inflate(R.menu.option_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }
}

 

以上でメニューの表示は完了。

画面右上の「…」ボタンをクリックすると、

 

メニューが表示される。

 

【オプションメニューがクリックされた時のイベント(クリックイベント)を実装】

現時点ではまだオプションメニューに何も処理をいれてないため、クリックしても何も起きない。

クリックされたときの処理を追加する場合は、以下の16~29行目のコードをアクティビティークラス内に記述する。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // オプションメニューを作成する
        getMenuInflater().inflate(R.menu.option_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // オプションメニューの選択時処理
        int itemId = item.getItemId();
        switch (itemId) {
            case R.id.test1:
                Log.d("test","テスト1が押された");
                break;
            case R.id.test2:
                Log.d("test","テスト2が押された");
                break;
        }
        return true;
    }
}

 

それぞれ、case文で処理をわけており、押されたidによって処理(上記はログを出力する処理のみいれてある)を行う感じ。

 

 

他のプログラミングに関する記事はこちら

スポンサーリンク