前提・実現したいこと
Javaを使ってAndroidStudio でビンゴアプリを作成しています。
ビンゴアプリの中でランダムに選んだ数値をログに書き残しておくようなアプリなのですが、リセットボタンを実装することができません。
ログの数値が消えず、リセットボタンを押しても何の反応もしないのですが、この場合の問題点について分かる方がいらっしゃいましたらご教授願います。
※下記全ソースコード添付します。
package com.example.renwhite.mybingo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.ArrayList;
import static com.example.renwhite.mybingo.R.id.ConstraintLayout;
import static com.example.renwhite.mybingo.R.id.current_number;
import static com.example.renwhite.mybingo.R.id.reset_max_number;
public class MainActivity extends AppCompatActivity {
//最大値
private int maxNumber = 75;
//数字の履歴
private ArrayList<String> history = new ArrayList<>();
//最大値の入力欄 private EditText maxNumberEditText; //最大値の設定ボタン private Button registerMaxNumberButton; //次の数字を出すボタン private Button nextNumberButton; //現在の数字を表示するTextView private TextView currentNumberTextView; //履歴を表示するTextView private TextView historyTextView; //出力ログをリセットするButton private Button resetMaxNumber; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //ビューの変数を初期化する maxNumberEditText = findViewById(R.id.max_number); registerMaxNumberButton = findViewById(R.id.register_max_number); nextNumberButton = findViewById(R.id.next_number); currentNumberTextView = findViewById(R.id.current_number); historyTextView = findViewById(R.id.history); resetMaxNumber = findViewById(R.id.reset_max_number); //数値をリセットする final Button resetMaxNumber = findViewById(R.id.reset_max_number); resetMaxNumber.setText("Reset"); resetMaxNumber.setOnClickListener(new View. OnClickListener() { @Override public void onClick(View view) { //出力したログを初期値に戻す Log.d("MainActivity", "resetMaxNumber"); } }); //最大値の初期値をEditTextにセットする maxNumberEditText.setText("" + maxNumber); //最大値を更新する registerMaxNumberButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //入力値を文字列で取り出す String maxNumberString = maxNumberEditText.getText().toString(); //int型に変換してから代入する maxNumber = Integer.valueOf(maxNumberString); Log.d("MainActivity", "maxNumber:" + maxNumber); } }); //表示中の数字を更新する nextNumberButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onClickNextNumber(); } }); } // nextNumberButtonがタップされた時の処理 private void onClickNextNumber() { Log.d("MainActivity", "onClickNextNumber"); // maxNumberを考慮したランダムな数値 int nextNumber = createRandomNumber(); //① //重複している数値だった場合は、数値の生成をやり直す while(history.contains("" + nextNumber)) {//② Log.d("MainActivity", "重複したので再生成"); nextNumber = createRandomNumber();// ③ } // nextNumberを文字列に変換する String nextNumberStr = "" + nextNumber;// ④ // nextNumberを画面に表示する currentNumberTextView.setText(nextNumberStr); //履歴を残す history.add(nextNumberStr); //履歴を残す historyTextView.setText(history.toString()); Log.d("MainActivity", history.toString()); } // maxNumberを考慮したランダムな数値を生成する private int createRandomNumber() { // 0.0~74.0(最大値が初期値の場合)の数値を生成する double randomNumber = Math.random() * (maxNumber - 1); // 1~75(最大値が初期値の場合)の整数値を生成する return (int) randomNumber + 1; }
}
発生している問題・エラーメッセージ
リセットボタンが反応しない
該当のソースコード
//数値をリセットする final Button resetMaxNumber = findViewById(R.id.reset_max_number); resetMaxNumber.setText("Reset"); resetMaxNumber.setOnClickListener(new View. OnClickListener() { @Override public void onClick(View view) { //出力したログを初期値に戻す Log.d("MainActivity", "resetMaxNumber"); } });
試したこと
ビンゴアプリは参考書を用いて作成したため、ネット上にある様々なJavaアプリの中で
数値のリセットボタンが実装されているものの中からコードを試しました。
補足情報(FW/ツールのバージョンなど)
利用環境:
Android Studio 3.5.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/24 14:24
2019/10/24 14:28