1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-10-25

はじめに

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

アプリの概要

画面右上に設置した保存ボタンを押すと、表示されているメッセージが変更するという超シンプルなアプリ
 

各ファイルのコード

オプションメニューの表示レイアウト設定

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

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を押してください)

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

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
ありがとうございました!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?