【Android/Java】超シンプルなOptionMenuの作成（API非実装） 

## はじめに
Android開発歴1週間の超ビギナーです。
アウトプットとして簡単なOptionMenuを作成してみました。
これを実装するだけでも、かなり時間かかったので同じビギナーの方の参考になれば幸いです。
※記載量を省略すべく、stringsファイルは使用しておりません。

## アプリの概要
画面右上に設置した保存ボタンを押すと、表示されているメッセージが変更するという超シンプルなアプリ
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/a8090243-6a16-d96c-8d12-be6bca692e3b.png" width=45%>　<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/047e42d0-7366-8c1a-b669-1e77ddbb8eed.png" width=45%>

## 各ファイルのコード
### オプションメニューの表示レイアウト設定

1) オプションメニュー用のxmlファイルをres/menuフォルダ内に作成する。
2) オプションメニューの大枠はmenuタグ、メニューの要素(保存ボタン)はitemタグでつくる。
3) itemタグに必要な３つの属性
android:id : メニューファイルとjavaファイルを紐付けるための鍵
android:title : メニューに表示する文字列
app:showAsAction : アクションバーに表示するかどうか(never<ifRoom<always)

```xml:option_menu.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/option_save"
        android:title="保存"
        app:showAsAction="always" />

</menu>
```
### メイン画面のレイアウト設定
android:id ： レイアウトファイルとjavaファイルを紐付けるための鍵
android:text ： メイン画面に表示する文字列

```xml:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

　　 // idとtextをいじるだけ
    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="保存ボタンを押してみよう"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
```

### javaファイル（アプリケーションの機能をつくる場所）
※package, import 文は省略してます。(赤字になったらoption + Enterを押してください)

下記２つのメソッドはオプションメニューを実装するためのルールだと思ってください。
onCreateOptionsMenu(Menu menu)
onOptionsItemSelected(MenuItem item)

```java:MainActivity.java
public class MainActivity extends AppCompatActivity {
    // デフォルトのままでok
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // オプションメニュー（保存ボタン）の表示
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // MenuInflater(メニューをJavaオブジェクトまでインフレートさせるためのクラス)を取得
        MenuInflater inflater = getMenuInflater();
        // option_menu.xmlに記述されたメニュー部品をJavaオブジェクトにインフレートする
        inflater.inflate(R.menu.option_menu, menu);
        // 戻り値をreturnする
        return true;
    }

    // オプションメニュー（保存ボタン）が選択されたときの処理
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
        // activity_main.xmlのTextViewを取得
        TextView textView = findViewById(R.id.text_view);
        // 取得したテキストに新しい文字列を設置
        textView.setText("保存ボタンが押されました");
        // 戻り値をreturnする
        return true;
    }
}
```
## 最後に
超初心者なので違うところありましたらぜひご指摘お願いします。

## 参考サイト
・https://developer.android.com/guide/topics/ui/menus?hl=ja#options-menu
・https://qiita.com/watataku/items/5faad0384b54d0c53f6e
ありがとうございました！