前提・実現したいこと
JavaでAndroidアプリを作るため独学で勉強している初心者です。
参考書「1日で基本が身につく!Androidアプリ開発超入門」にて、AndroidStudioを用いてJavaでランダムな数字を表示するビンゴアプリを作っています。
参考書通りに記述しているのですが、生成した数値を表示する際に二桁の数字が10の位だけ表示されすべて現れません。
解決手段が分からないので教えていただけると助かります。
発生している問題・エラーメッセージ
TextViewに表示されるべき数字が全て表示されないこと。
エラーメッセージは出ておらず、実行は可能であること。
レイアウトエディターの「ハードコードされたテキスト」というエラーメッセージが表示されている。
該当のソースコード
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; @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); //最大値の更新をする registerMaxNumberButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { //入力値を文字で取り出す String maxNumberString =maxNumberEditText.getText().toString(); //int型に変換してから代入する maxNumber=Integer.parseInt(maxNumberString); Log.d("Mainactivity","maxNumber"+maxNumber); } }); //表示中の数字を更新する nextNumberButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ onClickNextNumber(); } }); } //nextNumberを文字列に変換する String nextNumberStr = ""+nextNumber; //nextNumberを画面に表示する currentNumberTextView.setText(nextNumberStr); //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); Log.d("MainActivity",history.toString()); //履歴を表示する historyTextView.setText(history.toString()); }
試したこと
nextNumberを画面に表示するコードの引数を""+nextNumberに変更して実行
レイアウトエディターのTextViewのcurrent_Numberのテキストから0を削除→ハードコードのエラーは解除されたが二桁は表示されなかった
補足情報(FW/ツールのバージョンなど)
AndroidStudioのバージョンは4.0
仮想デバイス(Android10.0+)