Android Studio 4.1 以降のバージョンをお使いの方はこちらをお読み下さい。
この講座の目次はこちら
今回は最後の総仕上げです!結果画面にクイズの正解数を表示して、トータルスコアを保存できるようにしていきます。
目次
動画
動画では Android Studio 3.1.4 を使用していますが 3.6 / 4.0 でも動作確認済みです。
解説
正解数をResultActivityに渡す
まずは正解数を結果画面で表示するために、MainActivity(ゲーム画面)から rightAnswerCount(正解数)を ResultActivity(結果画面)へ渡します。
MainActivity.java を開いて、6~8行目を追加してください。
必要なimport
前回までと同様にalt + returnを押して警告を消します。
追加される import はこの1行です。
Intent(インテント)とは?
新しくアクティビティ(ResultActivity)を開く場合は Intent(インテント) を使います。
startActivity(intent);
インテントを作成して startActivity に渡すことで結果画面を表示することができます。
今回は rightAnswerCount(正解数)を ResultActivity(結果画面)で使いたいので、インテントを startActivity に渡す前に、この1行を書いています。
putExtra(取り出す時に使うキー, 渡したい値)のように使います。
キーは string(文字列)ですが、値は string, int, floatなどをセットすることができます。
正解数の表示
次に MainActivity から渡した正解数を結果画面で受け取って表示します。
ResultActivity.java を開いて、6~8行目を追加してください。
Warning が出ている箇所があると思いますが、最後に修正するのでそのままにしておいて下さい。
正解数を取得
先ほど MainActivity.java で設定したキー RIGHT_ANSWER_COUNT を使って、正解数を取得します。
正解数は int 型だったので、getIntExtra() を使います。
書き方はgetIntExtra(キー, 値が取得できなかった場合の値)となります。
正解数を表示
findViewById で取得した resultLabel に正解数を「3 / 5」と表示します。
「5問中3問正解」と表示したい場合は、このように書いてみてください。
トータルスコアの表示・保存
次に累計正解数をトータルスコアとして保存・表示してみます。
アプリにデータを保存するには
- SharedPreferences
- SQLiteデータベース
- テキストファイル
を使う方法がありますが、今回は一番手軽に使える SharedPreferences を紹介します。
以下のコードを追加します。
見やすいように順番を変えてコメントも書きましたが、新しくに追加したコードは7, 13, 14, 17, 21, 24~26行目です。
Warning が出ている箇所があると思いますが、最後に修正するのでそのままにしておいて下さい。
必要なImport
alt + returnを押して警告を消します。
追加される import はこの2行です。
import android.content.SharedPreferences;
まずは SharedPreferences を使えるようにします。
getSharedPreferences(データの名前, モード)のように書きます。
モードには、他のアプリからも読み書きできる
- MODE_WORLD_READABLE
- MODE_WORLD_WRITEABLE
- MODE_MULTI_PROCESS
がありますが、今回はこのクイズアプリでのみ使用できれば良いので MODE_PRIVATE にします。
トータルスコアを取り出す
getInt(キー, データが無かった場合の数値)のように書きます。
初めてクイズに挑戦した時は、まだトータルスコアが保存されていないので0が返ってきます。
トータルスコアを表示する
SharedPreferences から取得したトータルスコアに今回のクイズの正解数を加算して、最新のトータルスコアを表示します。
21行目 totalScoreLabel.setText("トータルスコア : " + totalScore);
トータルスコアを保存する
25行目 editor.putInt("totalScore", totalScore);
26行目 editor.apply();
putInt(キー, 保存する値)のようにデータをセットします。
注意して頂きたいのが、読み出し時・書き込み時のキーを必ず合わせることです。
書き込み時 editor.putInt("totalScore", totalScore);
ここが一致しないとデータを保存できても読み出せなくなってしまうのでお気をつけください。
最後に apply() で保存します。
今回はトータルスコアを保存しましたが、ハイスコアやユーザー名、最後にクイズに挑戦した日など色々な使い方ができると思います。
トータルスコア以外にもデータを保存したい場合は、キーを変えることで複数のデータを保存することもできます。
例えば、トータルスコアに加えて、以下のようにユーザー名を読み書きすることもできます。
editor.putString("KEY_NAME", userName);
ぜひ工夫して使ってみてください
もどるボタンの実装
最後に「もどる」ボタンを押すとクイズ画面に戻るようにします。
activity_result.xml で、このように「もどる」ボタンを書きました。
onClick に設定したボタンが押された時に呼ばれる returnTop メソッドを書いていきます。
7~10行目を追加します。
必要な import
前回までと同様にalt + returnを押して警告を消します。
追加される import はこの2行です。
import android.view.View;
Intent
画面遷移は MainActivity から正解数を渡した時と同じようにインテントを使用しています。
今回は何もデータを渡さないので、インテントを作成して startActivity に渡すだけです。
以下のように1行にまとめて書くこともできます。
完成
お疲れ様でした!これで全て完成です!
完成版のサンプルコードは GitHub からダウンロードできます。
GitHub:https://github.com/codeforfun-jp/quizapp
参考:GitHubからAndroid Studio プロジェクトをダウンロード・実行する方法
2020年8月追加
Warning の解消方法を追加しました。
そのままにしておいても今のところプログラム自体に影響はないので、気になる方だけ進めてみてください。
ここまで読んで頂いてありがとうございました
「アプリ開発って意外と簡単だな」と感じて頂けていれば嬉しい限りです。クイズ内容は自由にアレンジして構わないので、ぜひオリジナルのアプリを作ってみてくださいね。
ここまででもクイズアプリとしては十分に機能しますが「もっとアプリ開発をしてみたい!自分のアプリをリリースしたい!」という方のために、この講座の完全版をご用意しました。
完全版では
- SQLite Databaseを使ったクイズ管理
- クイズカテゴリの選択
- 正解・不正解の効果音
- AdMob 広告
- Google Play Games との連携
- リーダーボードによるランキング機能
- アチーブメント(実績)機能
を実装していきます。
Google Play Store へのアプリの公開方法・更新方法も紹介しているので、講座を進めながらアプリを全世界に公開することができます。
ここまでと同じように全手順の動画・テキスト解説付きです。もう少し挑戦してみたい!という方はぜひご参加お待ちしています

この講座では Android Studio で4択クイズアプリを開発しながら
- SQLite データベースの使い方
- カテゴリ別のクイズ出題
- AdMob 広告の実装
- Play ストアへのアプリの公開
- Google Play ゲームとの連携
を学ぶことができます。
アプリを開発するだけでなく、アプリをリリースして広告収入を得たいという方にオススメの講座です。
4択クイズアプリで勉強させて頂きました。
会社の業務効率化のためにVBA、ADO、SQLを駆使してエクセル・アクセスである程度の事ができるレベルに達しているのですが、副業や転職には全く役に立たないので、javaの勉強を始めたのですが、実際にコーディングするのが一番だと思い、せっかくならアプリの勉強もやってみよう!とチャレンジしています。
ProgateやUdemy、ドットインストールなども利用しましたが、AndroidStudioのバージョンが古かったり、説明が下手だったり、いまいちピンと来なかったのですが、Saraさんのブログは非常に分かり易かったです。
Android 開発のための Java 入門の完成、楽しみにしております。
gucciさん、はじめまして!
サイトを見つけて頂きありがとうございます。
分かり易いと言っていただけて、とても嬉しいですし励みになります!
私はVBA周りについてはあまり詳しくないのですが、用語や考え方はJavaと似ている部分もあるのかなと思います。
全くゼロからプログラミングを始めるという方よりもサクサクと進められる箇所も多いと思いますので、ぜひ色々なアプリを開発してみてください🙂
Java入門の更新もこれから再開する予定ですので、お時間があるときにまたサイトを覗いて頂ければと思います🙂
四択クイズアプリ参照させていただきました。
私は、androidエンジニアを目指している学生です。
androidエンジニアを目指しているからにはせめて、インターンする際に自己アピールも含めて、自作のandroidアプリを作っておかねばと思っていました。
しかし、本やサイトで学んでいても内容が抽象的な内容で実践的でなかったり、正直説明が分かりにくいというのが学ぶ上での障害となっていました。
そんな中、Saraさんのサイトに出会いました。色々なサイトを探してきましたが、このサイトが一番分かりやすく且、短時間でサンプルアプリを作ることができました。本当にありがとうございました。このサンプルアプリを改善することでさらにプログラミングを上達させたいなと思います。これからも、このサイトを参照して色々と学ばせていただきます。
このサイトを立ち上げていただいてありがとうございました。
はじめまして。当サイトを見つけていただきありがとうございます🙂
インターンのために自作の Android アプリを作っておくというのはとても良いことだと思います!私はインターンの経験はありませんが、初めて仕事をいただくまでにウェブサイトやアプリをたくさん作っていました。簡単なプログラムでも自分で書いたコードをたくさん用意しておけば、いつか必ず役立つと思います。
私もプログラミングを始めたばかりの頃、本やサイトの内容についていけずに挫折しかけたことがあります。その時の経験から自分と同じような人のお役に立てれば!と思ってこのサイトを始めたので「分かりやすく且、短時間でサンプルアプリを作ることができた」とお聞きして本当に嬉しいです。
現在、新しい記事や Android 開発の講座を書いていますので、ぜひお時間があるときにまたサイトを覗いてみてください🙂
少しでも lia さんのお役に立てれば嬉しい限りです。