Android Studio Chipmunk | 2021.2.1 での動作確認を完了しました。(2022年5月)
この講座の目次はこちら
前回はクイズを管理する配列を作成しました。
今回は、その配列からクイズを取り出してクイズ画面に表示してみましょう。
目次
動画
動画では Android Studio 4.1 を使用していますが、Arctic Fox / Bumblebee / Chipmunk でも動作確認済みです。
テキスト
1. クイズ出題用のメソッド
5~36行目を追加してください。
必要な import
2つの import 文が追加されます。
import java.util.Random;
自動的に追加されない場合はこちら:自動 import を有効にする方法
7行目:Warning の解消
文字列の上にカーソルを合わせると Do not concatenate text displayed with setText. Use resource string with placeholders. と表示されます。
これは「文字列を連結しないで、string リソースでプレースホルダーを使ってください」という Warning です。
string リソースとは strings.xml ファイルのことで、プレースホルダーは strings.xml に定義した「Q%d」の %d のことです。
クイズ画面を作成した時に strings.xml に書いた
の %d の部分に、問題番号を入れて表示してみましょう。
countLabel.setText("Q" + quizCount); を以下のように書き換えてください。
getString メソッドを使って strings.xml に定義した文字列を R.string.名前 と書いて取り出して、第二引数には %d の部分に入れる数値を指定します。
Warning が消えましたね。
10・11行目:ランダムな数字
quizArrayからランダムにクイズを取り出すために、ランダムな数字を生成します。
nextInt() メソッドを使うと「0から指定した値未満の整数」を返してくれます。
例えば
は 0から5未満の整数、つまり0・1・2・3・4のどれかを返します。
ここでは quizArray からランダムにクイズを取り出したいので、0から配列の要素数マイナス1の範囲でランダムな数字を生成しています。
ArrayList<String> quiz の中身
ArrayList<String> quiz には、この順番で要素が入っています。
{"都道府県名", "正解", "選択肢1", "選択肢2", "選択肢3"}
questionLabel には都道府県名を表示するので quiz.get(0) で quiz 配列から取り出します。
rightAnswer には正解を入れておくので quiz.get(1) で quiz 配列から取り出します。
26行目:選択肢のシャッフル
都道府県名は23行目で削除しているので、この時点で quiz 配列に残っているのは正解と3つの選択肢です。
これら4つの順番を Collections クラスの shuffle メソッドを使ってシャッフルします。
シャッフルしてから解答ボタンにセットすることで、毎回違う順番で選択肢を表示できるようになります。
35行目:クイズを削除
同じ問題が出題されないように、quizArray から忘れずに削除しておきましょう。
2. showNextQuiz を呼び出す
4行目を追加します。
アプリを起動して MainActivity が呼び出されたときにクイズが出題されるように showNextQuiz() を呼び出します。
3. エミュレーターで確認する
ここまでのコードが上手く動くかエミュレーターで確認してみましょう!
クイズが表示されましたか?
ランダムに出題されるかを確認するために、一度アプリを終了して再度開いてみてください。
問題文が変わって、解答ボタンの順番もシャッフルされているでしょうか?
上手く表示されない場合は、最後にサンプルコードを貼ってあるので比較してみてください。
次に行うこと
次回はクイズアプリで一番重要な機能「正解・不正解の判定」を実装していきます。
ここまでのコード
クイズアプリ開発講座の完全版について
もっとアプリ開発をしてみたい!自分のアプリをリリースしたい!という方のために、この講座の完全版をご用意しました。
完全版では
- SQLite Databaseを使ってのクイズ管理
- クイズカテゴリの選択
- 正解・不正解の効果音
- AdMob バナー・インタースティシャル広告
- Image Asset Studio(アイコン作成ツール)の使い方
などを実装していきます。
これらのコードはクイズアプリ以外にも利用できるコードばかりなので、今後アプリを開発していく時に必ず役立つと思います。
さらに2つの特典
- 画像を使ったクイズアプリの作り方
- 答えを入力するクイズアプリの作り方
もご用意しました。
全手順の動画付きで、アプリの開発から公開・アップデートまで出来る講座になっています。
初めてアプリを作るという方もぜひ挑戦してみてください
初めての質問失礼致します。
最近から勉強を始め、分かりやすく、楽しく勉強させて頂いております。
クイズアプリ開発のエラーについて2つ質問があります。
「//randomNumを使ってquizArrayからクイズをひとつ取り出す」の部分のコードの部分にエラーが出てしまいます。互換性のない型です、と出ます。どうしたら宜しいでしょうか。
また、「//正解をrightAnswerにセット」のコードでもエラーが出てしまいました。java.util.ArrayListのset(int.java.lang.String)は(int)に適用できません、と出ます。
以上となります。
初歩的な点かと思い恐縮ですが、ご教示頂けると嬉しいです。
宜しくお願い致します。
はじめまして、当サイトを見つけていただきありがとうございます!
以下のサンプルコードでテストしたところ問題ありませんでしたので、もう一度ご自身のコード(特に ArrayList 周辺)をご確認ください。
https://codeforfun.jp/android-studio-4x-quiz-game-4/#i-3
2つ目のエラーは1つ目のエラーが解決できれば解消するはずです。
サンプルコードを使ってもエラーになってしまう場合は、コードのスクリーンショット添付して頂ければと思います。
先ほどの質問した者です。
情報が抜けており失礼しました。
開発環境はwindows10、アンドロイドスタジオ(2021.11.15インストール)になります。
宜しくお願い致します。