質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1199閲覧

Androidstudio でメニューに関するメソッドを呼び出す時の引数が分からない

hitugayato

総合スコア9

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/07/17 09:34

###前提・実現したいこと
ここに質問したいことを詳細に書いてください

メニューを作成表示し、選択に応じた対応を行う2つのメソッドを持つクラスを作り、それらを呼び出す機能を実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ

onCreateOptionsMenu(Menu)in Activity cannot be applied to 0 onOptionsItemSelected(MenuItem)in Activity cannot be applied to 0

###該当のソースコード

```package com.example.myapplicationbotton; import java.io.IOException; import java.util.*; import android.app.*; import android.content.*; import android.os.*; import android.os.Bundle; import android.support.v7.app.*; import android.support.v7.app.ActionBar; import android.view.Menu; import android.view.MenuItem; import android.widget.TableLayout; import android.widget.TextView; public class stage extends AppCompatActivity { //敵とバトルします //必要な値の定義 TextView tv1; TextView tv2; int myhp = 20; int myap = 4; int ehp = 10; int eap = 2; public void onCreate(Bundle savedInstanceState) { //画面のレイアウト super.onCreate(savedInstanceState); TableLayout t1 = new TableLayout(this); setContentView(t1); tv1 = new TextView(this); tv1.setText("うりぼー"); tv2 = new TextView(this); tv2.setText("あなたは私の洗礼を受けるのよ!"); t1.addView(tv1); t1.addView(tv2); battle b = new battle(); while((myhp<=0)||(ehp<=0)){ b.onCreateOptionsMenu(super.onCreateOptionsMenu()); b.onOptionsItemSelected(super.onOptionsItemSelected()); } } } //この下の二つのメソッドを持つクラスを回したいです。 class battle extends AppCompatActivity{ public boolean onCreateOptionsMenu(Menu menu) { //コマンドのメニューを表示 menu.add(Menu.NONE, 0, 0, "戦う"); menu.add(Menu.NONE, 1, 1, "魔法"); menu.add(Menu.NONE, 2, 2, "道具"); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem mi) { //メニューの選択に対するアクション TextView tv1; TextView tv2; tv2 = new TextView(this); int myhp = 20; int myap = 4; int ehp = 10; int eap = 2; String str = null; switch (mi.getItemId()) { case 0: str = "戦う"; tv2.setText("うりぼーに" +myap+ "のダメージを与えた." + "うりぼーから" +eap+ "のダメージを受けた。"); ehp = ehp - myap; myhp = myhp - eap; break; case 1: str = "魔法"; tv2.setText("うりぼーに" +myap+ "のダメージを与えた." + "うりぼーから" + eap+"のダメージを受けた。"); ehp = ehp - 5; myhp = myhp - eap; break; case 2: str = "道具"; tv2.setText("うりぼーに餌を与えた." + "うりぼーは" +myap+ "回復した."); ehp = ehp + 4; break; } tv2.setText(str + "を選択した。"); return true; } } ###試したこと 引数が問題であることは分かっているのですが、実力に見合わない文に挑んでいることと、引数の基本的知識がないことで、何を入れたらいいのかさっぱりです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

AndroidではActivityを継承したクラスは特別なクラスで、プログラマーがnewでインスタンス化するものではありません。
根本的な理解が間違っているようなので、まずは参考書で基本を見直すことを進めます。

また、Javaではクラス名は大文字で始めるべきです。コードもコード用の記述方法に修正したほうがいいですね。

投稿2017/07/17 10:58

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hitugayato

2017/07/17 11:41

アンサーありがとうございます。 それでは、どのように書けばエラーが出ずに解決出来るでしょか?
yona

2017/07/17 11:55

そもそもこの質問の問題が発生すること自体が間違っているので解決はできません。 おそらく、オプションメニューをコマンドメニューとして使いたいようですが、オプションメニューはそのように使えません。 onCreateOptionsMenuはオプションメニューを作るタイミングで呼ばれるメソッドであり、あなたが呼ぶメソッドではありません。 また、onCreateでwhile文を使い何度もコマンドを選択させたいようですが、これもできません。あなたはオプションメニューが表示されれば、選択するまで処理が止まると思っていませんか?
hitugayato

2017/07/17 12:39

なるほど そもそもコマンドを何度も選択させるためには他のメソッドを使うべきで、オプションメニューをコマンドメニューとして使うこと自体ずれていたのですね。 ありがとうございます。
hitugayato

2017/07/17 12:40

よろしければ使うべきメソッドの種類だけでもお教えいただけないでしょうか?
yona

2017/07/17 12:52

メソッドでは解決できません。 Activityではなく、DialogFragmentを継承したカスタムダイアログを作成するべきです。
hitugayato

2017/07/17 15:06

了解しました。 調べて作成してみます。 度々ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問