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
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
あなたにオススメのプログラミング講座

この講座では Android Studio で4択クイズアプリを開発しながら

  • SQLite データベースの使い方
  • カテゴリ別のクイズ出題
  • AdMob 広告の実装
  • Play ストアへのアプリの公開
  • Google Play ゲームとの連携

を学ぶことができます。

アプリを開発するだけでなく、アプリをリリースして広告収入を得たいという方にオススメの講座です。

guest
0 Comments
Inline Feedbacks
View all comments
0
この記事にコメントするx