前提
androidについて質問します。
menuを動的に項目を追加しようと思っています。
例えば、メインのボタンを押すとボタンを押された回数だけメニューボタンを追加したいと考えています。
しかし、調べてみると表示するメニューバーをif文で切り替えるみたいなやり方しかなく、そうしてしまうと、ボタンを100回押された場合に100個のmenuレイアウトファイルを作成しなければなりません。
プログラムから動的にメニューボタンをセットするにはどのようにしたらいいのでしょうか。
また、追加されたメニューボタンを押した際にもアクションを起こせるようにしたいです。
実現したいこと
動的にオプションボタンを追加する
該当のソースコード
枠組みだけですが。。
MainActivity.java
1import android.os.Bundle; 2import android.view.Menu; 3import android.view.MenuItem; 4 5import androidx.appcompat.app.AppCompatActivity; 6 7public class MainActivity extends AppCompatActivity { 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 12 } 13 14 15 @Override 16 public boolean onCreateOptionsMenu(Menu menu) { 17 getMenuInflater().inflate(R.menu.option, menu); 18 return super.onCreateOptionsMenu(menu); 19 } 20 21 // メニューが選択されたときの処理 22 @Override 23 public boolean onOptionsItemSelected(MenuItem item) { 24 switch (item.getItemId()) { 25 default: 26 return super.onOptionsItemSelected(item); 27 } 28 } 29}
activity_main.xml
1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".MainActivity"> 8 9 10 <Button 11 android:id="@+id/button" 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:text="オプションボタンを追加" 15 app:layout_constraintStart_toStartOf="parent" 16 app:layout_constraintTop_toTopOf="parent" /> 17</androidx.constraintlayout.widget.ConstraintLayout>
option.xml
1<?xml version="1.0" encoding="utf-8"?> 2<menu xmlns:android="http://schemas.android.com/apk/res/android"> 3 4</menu>