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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

1回答

3404閲覧

finalで定数宣言しているはずなのに定数式が必要ですとエラーが出る

noname__

総合スコア3

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

0クリップ

投稿2023/05/02 15:10

前提

https://www.youtube.com/watch?v=voenq5EqxxA
こちらの動画を閲覧してAndroidStudioの使い方とかを勉強しようかとやってみたのですがonClickのとこでどうしても"定数式が必要です"と出て次に進めないです。

ガチ初心者なのでお手柔らかにお願いします

該当のソースコード

java

1public class MainActivity extends AppCompatActivity implements View.OnClickListener { 2 3 private TextView title; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 10 TextView title = findViewById(R.id.Title); 11 Button startBtn = findViewById(R.id.StartGame); 12 ((Button)findViewById(R.id.ViewHighScore)).setOnClickListener(this); 13 startBtn.setOnClickListener(this); 14 } 15 16 private static final int START_GAME_BUTTON_ID = R.id.StartGame; 17 private static final int VIEW_HIGH_SCORE_BUTTON_ID = R.id.ViewHighScore; 18 19 @Override 20 public void onClick(View view) { 21 22 switch (view.getId()) { 23 case START_GAME_BUTTON_ID: 24 title.setText("Tst"); 25 break; 26 case VIEW_HIGH_SCORE_BUTTON_ID: 27 break; 28 } 29 } 30}

試したこと

動画のコード case R.id.StartGame:でエラーが出たため現在のコード case START_GAME_BUTTON_ID:に変えてみたりしてみたんですがずっとエラーが出ます

補足情報(FW/ツールのバージョンなど)

Android Studioの概要は以下の通りです

Android Studio Flamingo | 2022.2.1 Patch 1 Build #AI-222.4459.24.2221.9971841, built on April 20, 2023 Runtime version: 17.0.6+0-b2043.56-9586694 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 10 10.0 GC: G1 Young Generation, G1 Old Generation Memory: 1280M Cores: 12 Registry: external.system.auto.import.disabled=true ide.text.editor.with.preview.show.floating.toolbar=false gradle.version.catalogs.dynamic.support=true Non-Bundled Plugins: com.intellij.ja (222.202)

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

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

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

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

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

jimbe

2023/05/02 17:25

動画では Androidstudio 4.1.1 を使っていますので、2年前から変わった所があることは留意しておく必要はあると思います。 Rクラスがどうなっているか見てみては如何でしょうか。
hoshi-takanori

2023/05/02 18:00

R.id.xxx は最近 (Flamingo から?) const ではなくなったようですね。Java では switch 文などで問題になりますが、Kotlin の when なら変数が使えるので気づきませんでした。この副作用として、R.id.xxx の値をコードから変更できてしまいますね。これって大丈夫なのだろうか…。(単なる感想ですみません。)
jimbe

2023/05/03 08:39

コメント間違っていました。 最近の android studio では (gradle プラグインにより) R.java は生成せず直接クラスファイルとしてアプリに組み込まれますので、 R.java として確認は出来ません。
guest

回答1

0

ベストアンサー

そもそもRってなんだっけという話ですが、これはプロジェクトをビルドする時に自動的に生成されるR.javaというファイルに定義されているクラスです。
そして、R.id.xxxは定数ではありません。
そのため、switchのcase文でR.id.xxxを使うことがそもそもできません。
※古いAndroid SDKのコードでは記述が可能でしたが、途中でR.id.xxxが定数ではなくなったため、最新の環境では使えなくなっています
という事でif-elseで書き換える必要があります。

java

1 @Override 2 public void onClick(View view) { 3 if(view.getId() == START_GAME_BUTTON_ID) { 4 ... 5 }else if(view.getId() == VIEW_HIGH_SCORE_BUTTON_ID) { 6 ... 7 } 8 }

投稿2023/05/02 15:47

mingos

総合スコア4025

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

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

noname__

2023/05/03 06:14

なるほど!ありがとうございます ちなみにswitch文とifの使い分けってどうしてますか? それとRのほかに定数にできないものとかってあるんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問