4択クイズアプリ

【Android Studio 4.1】クイズアプリ開発講座 第4回「問題と選択肢を表示する」

 
この講座の目次はこちら

Android Studio 3.x / 4.0.1 をお使いの方はこちらをお読み下さい。

前回はクイズを管理する配列を作成しました。

今回は、その配列からクイズを取り出してクイズ画面に表示してみましょう。

 


 

動画

【Android Studio 4.1】クイズアプリ開発講座 #5 問題と選択肢を表示する

 
 

テキスト

1. クイズ出題用のメソッド

5~36行目を追加してください。

 

必要なImport

必要なimport
 

前回までと同じように alt キーと return キーを同時に押して警告を消してください。

以下の import が追加されます。

import java.util.Collections;
import java.util.Random;

 
 

Warning の解消

7行目 countLabel.setText("Q" + quizCount);

文字列の上にカーソルを合わせると Do not concatenate text displayed with setText. Use resource string with placeholders. と表示されます。

Do not concatenate text displayed with setText. Use resource string with placeholders
 

これは「文字列を連結しないで、string リソースでプレースホルダーを使ってください」という Warning です。

string リソースとは strings.xml ファイルのことで、プレースホルダーは strings.xml に定義した「Q%d」の %d のことです。
 

クイズ画面を作成した時に strings.xml に書いた

<string name="count_label">Q%d</string>

%d の部分に、問題番号を入れて表示してみましょう。
 

countLabel.setText("Q" + quizCount); を以下のように書き換えてください。

countLabel.setText(getString(R.string.count_label, quizCount));

 

getString メソッドを使って strings.xml に定義した文字列を R.string.名前 と書いて取り出して、第二引数には %d の部分に入れる数値を指定します。
 

Warning が消えましたね。

Warningが消えました
 
 

ランダムな数字

10・11行目では、quizArrayからランダムにクイズを取り出すために、ランダムな数字を生成しています。

nextInt() メソッドを使うと「0から指定した値未満の整数」を返してくれます。

例えば

random.nextInt(5)

0から5未満の整数、つまり0・1・2・3・4のどれかを返します。
 

ここでは quizArray からランダムにクイズを取り出したいので、0から配列の要素数マイナス1の範囲でランダムな数字を生成しています。
 
 

ArrayList<String> quiz の中身

ArrayList<String> quiz には、この順番で要素が入っています。
{"都道府県名", "正解", "選択肢1", "選択肢2", "選択肢3"}
 

questionLabel には都道府県名を表示するので quiz.get(0) で quiz 配列から取り出します。

questionLabel.setText(quiz.get(0));

 

rightAnswer には正解を入れておくので quiz.get(1) で quiz 配列から取り出します。

rightAnswer = quiz.get(1);

 

選択肢のシャッフル

26行目 Collections.shuffle(quiz);

都道府県名は23行目で削除しているので、この時点で quiz 配列に残っているのは正解と3つの選択肢です。

これら4つの順番を Collections クラスの shuffle メソッドを使ってシャッフルします。

シャッフルしてから解答ボタンにセットすることで、毎回違う順番で選択肢を表示できるようになります。
 
 

クイズを削除

35行目 quizArray.remove(randomNum);

同じ問題が出題されないように、quizArray から忘れずに削除しておきましょう。
 
 

2. showNextQuiz を呼び出す

4行目を追加します。

 

アプリを起動して MainActivity が呼び出されたときにクイズが出題されるように showNextQuiz() を呼び出します。
 
 

3. エミュレーターで確認する

ここまでのコードが上手く動くかエミュレーターで確認してみましょう!
 

クイズが表示されましたか?

エミュレーターで確認
 

ランダムに出題されるかを確認するために、一度アプリを閉じて再度開いてみてください。

問題文が変わって、解答ボタンの順番もシャッフルされているでしょうか?
 

もし上手く表示されない場合は、最後にサンプルコードを貼ってあるので比較してみてください。
 
 

次に行うこと

次回は、クイズアプリで一番重要な機能「正解・不正解の判定」を実装していきます。

第5回「正解・不正解を判定する」に進む
 
 

ここまでのコード

 
 

クイズアプリ開発講座の完全版について


 

もっとアプリ開発をしてみたい!自分のアプリをリリースしたい!という方のために、この講座の完全版をご用意しました。
 

完全版では

  • SQLite Databaseを使ってのクイズ管理
  • クイズカテゴリの選択
  • 正解・不正解の効果音
  • AdMob バナー・インタースティシャル広告
  • Image Asset Studio(アイコン作成ツール)の使い方

などを実装していきます。
 

これらのコードはクイズアプリ以外にも利用できるコードばかりなので、今後アプリを開発していく時に必ず役立つと思います。
 

さらに3つの特典

  1. Google Play Games リーダーボード・実績の実装方法
  2. 画像を使ったクイズアプリの作り方
  3. 答えを入力するクイズアプリの作り方

もご用意しました。
 

講座ボーナス
 

全手順の動画付きで、アプリの開発から公開・アップデートまで出来る講座になっています。

初めてアプリを作るという方もぜひ挑戦してみてください
 

 
 

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
独学は難しそうと感じたら

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません。)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい????
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA