🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Android Studio

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

Q&A

解決済

1回答

3905閲覧

ビンゴアプリにリセットボタンを追加できない

ren_white_prg

総合スコア9

Java

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

Android Studio

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

0グッド

0クリップ

投稿2019/10/24 14:12

前提・実現したいこと

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

リセットボタンを押したときの動作が「ログを出力する」だけで、事実上これは何もしていません。
履歴を書いているテキストボックスを最初の状態に戻したり、最大値を初期値に戻したりする動作をここでする必要があります。

というか、ビンゴマシーンの数字は1~75の数字をリストか何かに入れておいて、ランダムに抜き出すなりシャッフルしておくなりしたほうが圧倒的に楽です。

投稿2019/10/24 14:18

swordone

総合スコア20669

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

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

ren_white_prg

2019/10/24 14:24

swordoneさん アドバイスいただきありがとうございます。 テキストボックスの中を初期値に戻す動作を追加したいので自分なりに調べてみます。
swordone

2019/10/24 14:28

「初期値に戻す」というと大層に聞こえますが、要は「最初に入っていた値を入れなおす」だけです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問