P130

Android開発に関するメモランダム

カテゴリー: Android Studio ではじめる Android プログラミング入門 第3版 Android Studio 2対応  閲覧数:338 配信日:2018-04-20 14:02


オプションメニュー


アプリ画面の上部にある「アクションバー」をタッチすると表示されるメニュー
・Android端末のメニューボタン(機器に付いているハードウェアのボタン。ハンバーガーメニュー)を押すと、画面にポップアップして現れるメニュー
・Activityの機能として組み込まれており、Activityに用意されているイベントを利用して簡単に実装できる
・Activityクラスにある「onCreateOptionsMenu」メソッドをオーバーライドして作成

オプションメニューはどのメニューを選択しても、onOptionsItemSelectedメソッドが呼び出される
・その中で「どれを選んだか」をチェックし、分岐処理するのが基本

「res」フォルダ上で右クリックし、「Android Resource Directory」をクリック
・ここで「menu」フォルダを作成し、「main.xml」ファイルを作成
・「Resource Type」を「menu」に変更して「OK」をクリック
・作成した「menu」フォルダ上で右クリックし、「file」をクリック
・開いた「New File」でファイル名を入力
・menu_main.xmlというXMLファイルを作成

・作成したmain.xmlにオプションメニューのレイアウトを作成

menuタグ
・オプションメニューを表示するための要素
・1つ以上のitemタグを保持
オプションメニューを表示する

res/values/strings.xml

MenuInflater
・メニュー生成を行うための機能を提供するクラス
・Activityには、「そのActivityで使うメニューを生成するためのMenuInflaterインスタンス」が組み込まれている

R
・Androidに用意されている「各種XMLファイルを参照する値」をstaticフィールドとしてまとめてあるクラス

メニューのリソースを指定する値
・R.menu.activity_mainで設定されている

R.meu.activity_main
・Rクラスの「menu」内部クラスにあるmainフィールド
→「res」フォルダの「menu」フォルダにあるactivity_main.xml(ここではmenu_main.xml)ファイルが示す値

MainActivity.java
package work.w4c.android0.androidtoast20180420;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
   static final String MENU_ITEM = "menu item";

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

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.menu_main, menu);
       menu.add(MENU_ITEM);
       return true;
   }

   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
       if (MENU_ITEM.equals(item.getTitle())){
           Toast toast = Toast.makeText(this,"Hello, Toast!!",
                   Toast.LENGTH_LONG);
           toast.show();
       }
       return super.onOptionsItemSelected(item);
   }
}




回答を得られなかったQ


onCreateOptionsMenuで、エラー: シンボルを見つけられません
MainActivity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
//中略
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.menu_main, menu);

・下記エラーになります

エラー: シンボルを見つけられません
シンボル: 変数 menu
場所: クラス R

・「res」フォルダに「menu」がないのですが、これは自分で作成するのでしょうか?
・「run」したら自動で作成されるのかな、と思っていたのですが、
・それとも何かバージョンの問題ですか?

週間人気ページランキング / 2-16 → 2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新
指定期間人気ページランキング / 1970-1-1 → 2025-2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新