ALMON_D
@ALMON_D

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

android studioでonOptionsItemSelectedメソッドを書く方法について知りたいです

解決したいこと

2024年2月現在の最新版のandroid studioでonOptionsItemSelectedメソッドを書く方法について知りたいです。

状況:
android studioでアプリを制作しています。
メニューボタンを作り、そのボタンをクリックした時、menuディレクトリで作成したxmlファイル内のMenuItem(item1、item2)をエミュレーターで画面に表示させることはできました。
しかし、そのMenuItemをクリックしてもonOptionsItemSelectedメソッド内部の処理は行われず、表示されたMenuItem(item1、item2)が画面から消えてしまいます。

処理が行われない原因はエラーが出ていないため分かりませんが、おそらく処理コードの記述ミス以前の問題だと考えています(その考えに至った理由は、最後に記述させていただいています)。

MainActivity.java、example_menu.xmlで書いているコード

MainActivity.javaで書いているコードを入力
```java:MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.example_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.item2) {
        Toast.makeText(this, "Item2 selected", Toast.LENGTH_SHORT).show();
        return true;
    } else if (id == R.id.item1) {
        Toast.makeText(this, "Item1 selected", Toast.LENGTH_LONG).show();
        return true;
    }
    return super.onOptionsItemSelected(item);
}
example_menu.xmlで書いているコードを入力
<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/item1"
        android:icon ="@drawable/baseline_density_medium_24"
        android:title="To Do List"
        app:showAsAction="ifRoom"/>

    <item
        android:id="@+id/item2"
        android:title="Calendar"
        app:showAsAction="never" />
</menu>

自分で試したこと

本来はonOptionsItemSelectedメソッドでIntentで画面遷移させようと思い、YouTubeの動画を見てコードを書いてみたのですが、画面遷移できなかったため、画面遷移に必要な処理をする部分のコードをToast.makeTextの処理に変えてみました。

Toast.makeTextの処理もされないため、メソッドが機能しない原因は、内部の処理部分のコードミスではなく、メソッドの書き方にあるのではないかと考えています。

2024年2月現在の最新版のandroid studioでonOptionsItemSelectedメソッドを書く方法について、お手数おかけしますが、どなたか教えていただけますと幸いです。

0

1Answer

質問の回答ではありませんが、

綺麗に表示できず申し訳ありません。

XMLと同様に、Javaソースもコードブロックに書くことで、読みやすくすることができます。ぜひ、質問本文を修正させることをお勧めします。
下記は書き方の例のため、単色になっていますが、本文に書けば綺麗に見えます。

書き方
```java:MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.example_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.item2) {
        Toast.makeText(this, "Item2 selected", Toast.LENGTH_SHORT).show();
        return true;
    } else if (id == R.id.item1) {
        Toast.makeText(this, "Item1 selected", Toast.LENGTH_LONG).show();
        return true;
    }
    return super.onOptionsItemSelected(item);
}
```

0Like

Your answer might help someone💌