実現したいこと
ここに実現したいことを箇条書きで書いてください。
-エラーを解消したい。
前提
Nobuo_CREATE. Androidアプリを作ろう [Android Studio 2.1対応版] を参考にプログラムを組んでいる
発生している問題・エラーメッセージ
定数式が必要です
該当のソースコード
Java
1public class MainActivity extends AppCompatActivity implements View.OnClickListener { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 Button bt_ok; 9 bt_ok = findViewById(R.id.button_ok); 10 bt_ok.setOnClickListener(new View.OnClickListener() { 11 @Override 12 public void onClick(View view) { 13 EditText et_1 = (EditText) 14 findViewById(R.id.editTextText3); 15 TextView tv_1 = (TextView) 16 findViewById(R.id.textView2); 17 18 String text = 19 et_1.getText().toString(); 20 tv_1.setText(text); 21 } 22 23 24 }); 25 Button bt_1=findViewById(R.id.button_1); 26 bt_1.setOnClickListener(this); 27 Button bt_2=findViewById(R.id.button_2); 28 bt_2.setOnClickListener(this); 29 Button bt_3=findViewById(R.id.button_3); //MainActicityのメンバである下のonclickを呼ぶ。 30 bt_3.setOnClickListener(this); 31 } 32 33 34 @Override 35 public void onClick(View v) { 36 ImageView iv_vegeta= findViewById(R.id.vegeta); 37 38 switch(v.getId()){ 39 case R.id.button_1: 40 iv_vegeta.setImageResource(R.drawable.vegeta); 41 break; 42 case R.id.button_2: 43 iv_vegeta.setImageResource(R.drawable.frog); 44 case R.id.button_3: 45 iv_vegeta.setImageResource(R.drawable.emurian); 46 break; 47 default: 48 49 } 50 } 51}
breakを追加しても、39,42,44行目でいずれも「定数式が必要です。」と出てしまいます。
R.id.button_1,R.id.button_2,R.id.button_3 は定数なんですか?
ためしに if ( v.getId() == R.id.button_1 ) { ... } に置き換えてみては?
確か、 AndroidStudio はある時期から R.id.ほにゃらら は定数では無くなったはずです。
(AndroidStudio 4.1 から? → https://stackoverflow.com/questions/64335374/how-to-resolve-resource-ids-will-be-non-final-in-android-gradle-plugin-version)
参考書が 2015/7 発売 2016/7 改定のようなのでかなり古いです。
episteme さんの言われているように if に変えて下さい。
もしくは AndroidStudio 2.1 で開発してください。(新しい環境が古い環境でのモノをそのまま使えるとは限らないということです。)
ボタン毎に処理を分けるのなら最初からリスナを分けたほうが良いと思いますが、参考書がそうなら仕方無い所でしょうか。
解決できました。
ありがとうございました。
解決しましたら、どのように解決したのかを回答として書いて頂いてそれをベストアンサーとしてください。
ベストアンサーを選ぶことにより「解決済」と表示されるようになります。

回答2件
あなたの回答
tips
プレビュー