Nowadays Android is very popular, every student is selecting Android for their projects. It’s important for a beginner developer to build small-small Android projects to learn Android. Hey guys, welcome to Techpass Master. In this post we will create a basic Android Quiz App using Kotlin in Android Studio, This quiz app is the very basic level that contains a set of Questions, Answers, and options, which we will show to the user. Let’s create.
Page Contents
Basic Quiz App Demo






Follow step by step:
Step 1: Create A Project For Quiz App
- Start a new Android Studio Project.
- Select empty Activity and click Next.
- Project Name: Basic Quiz App.
- Choose Language: Kotlin.
- Now click Finish.
- Your project is ready now.
Step 2: Enable View Binding Basic
buildFeatures{
viewBinding=true
}Step 3: Download Resources
Step 4: Theme setting
Open theme and change the theme style DarkActionbar to NoActionBar.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.BasicMathApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>Step 5: Create custom layout for Correct Answer
<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Techpass Master.-->
<!-- Website - www.techpassmaster.com-->
<!-- Youtube - Techpass Master-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="22dp"
android:layout_marginRight="22dp"
android:background="@drawable/bg"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView5"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="16dp"
android:src="@drawable/correct_img"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tvDialog_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_marginBottom="50dp"
android:gravity="center"
android:text="Score: 0"
android:textAlignment="center"
android:textColor="@android:color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/correct_ok"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView5" />
<Button
android:id="@+id/correct_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="32dp"
android:background="@drawable/button_bg"
android:text="Ok"
android:textColor="@android:color/white"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>Step 6: Create custom layout for Wrong Answer
<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Techpass Master.-->
<!-- Website - www.techpassmaster.com-->
<!-- Youtube - Techpass Master-->
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="22dp"
android:layout_marginRight="22dp"
android:background="@drawable/bg"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView5"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="16dp"
android:src="@drawable/wrong_img"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_wrongDialog_correctAns"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_marginBottom="50dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:text="Correct Ans: xyz"
android:textAlignment="center"
android:textColor="@android:color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/wrong_ok"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView5"
app:layout_constraintVertical_bias="0.0" />
<Button
android:id="@+id/wrong_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="32dp"
android:background="@drawable/button_bg"
android:text="Ok"
android:textColor="@android:color/white"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>Step 7: Create custom layout for Time Over
<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Techpass Master.-->
<!-- Website - www.techpassmaster.com-->
<!-- Youtube - Techpass Master-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="22dp"
android:layout_marginRight="22dp"
android:background="@drawable/bg"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView5"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="16dp"
android:src="@drawable/time_over_img"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_marginBottom="50dp"
android:text="Time Over"
android:textAlignment="center"
android:textColor="@android:color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/timeOver_ok"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView5" />
<Button
android:id="@+id/timeOver_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="32dp"
android:background="@drawable/button_bg"
android:text="Ok"
android:textColor="@android:color/white"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>Step 8: Rename And Open HomeActivity Class
package com.techpassmaster.quizappkotlin
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.techpassmaster.quizappkotlin.databinding.ActivityHomeBinding
/**
* Created by Techpass Master.
* Website - www.techpassmaster.com
* Youtube - Techpass Master
*/
class HomeActivity : AppCompatActivity() {
private lateinit var activityHomeBinding: ActivityHomeBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityHomeBinding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(activityHomeBinding.root)
activityHomeBinding.playQuizHomeBtn.setOnClickListener {
val intent = Intent(this@HomeActivity, PlayActivity::class.java)
startActivity(intent)
}
}
}Step 9: Open HomeActivity Layout (XML)
<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Techpass Master.-->
<!-- Website - www.techpassmaster.com-->
<!-- Youtube - Techpass Master-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HomeActivity">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="cursive"
android:gravity="center_horizontal"
android:text="Basic Quiz App"
android:textColor="@color/black"
android:textSize="32sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/playQuiz_home_btn"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:padding="16dp"
android:text="Play Quiz"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> Step 10: Create and open PlayActivity class
package com.techpassmaster.quizappkotlin
import android.annotation.SuppressLint
import android.content.Intent
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Bundle
import android.os.CountDownTimer
import android.view.LayoutInflater
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.techpassmaster.quizappkotlin.databinding.ActivityPlayBinding
import java.util.*
import java.util.concurrent.TimeUnit
/**
* Created by Techpass Master.
* Website - www.techpassmaster.com
* Youtube - Techpass Master
*/
class PlayActivity : AppCompatActivity() {
private lateinit var activityPlayBinding: ActivityPlayBinding
// timer
private var countDownTimer: CountDownTimer? = null
private val countDownInMilliSecond: Long = 30000
private val countDownInterval: Long = 1000
private var timeLeftMilliSeconds: Long = 0
private var defaultColor: ColorStateList? = null
private var score = 0
private var correct = 0
private var wrong = 0
private var skip = 0
private var qIndex = 0
private var updateQueNo = 1
// create string for question, answer and options
private var questions = arrayOf(
"Q.1. If a computer has more than one processor then it is known as?",
"Q.2. Full form of URL is?",
"Q.3. One kilobyte (KB) is equal to",
"Q.4. Father of ‘C’ programming language?",
"Q.5. SMPS stands for",
"Q.6. What is a floppy disk used for",
"Q.7. Which operating system is developed and used by Apple Inc?",
"Q.8. Random Access Memory (RAM) is which storage of device?",
"Q.9. Who is the founder of the Internet?",
"Q.10. Which one is the first search engine in internet?")
private var answer = arrayOf(
"Multiprocessor",
"Uniform Resource Locator",
"1,024 bytes",
"Dennis Ritchie",
"Switched mode power supply",
"To store information",
"iOS",
"Primay",
"Tim Berners-Lee",
"Archie")
private var options = arrayOf(
"Uniprocess",
"Multiprocessor",
"Multithreaded",
"Multiprogramming",
"Uniform Resource Locator",
"Uniform Resource Linkwrong",
"Uniform Registered Link",
"Unified Resource Link",
"1,000 bits",
"1,024 bytes",
"1,024 megabytes",
"1,024 gigabytes",
"Dennis Ritchie",
"Prof Jhon Kemeny",
"Thomas Kurtz",
"Bill Gates",
"Switched mode power supply",
"Start mode power supply",
"Store mode power supply",
"Single mode power supply",
"To unlock the computer",
"To store information",
"To erase the computer screen",
"To make the printer work",
"Windows",
"Android",
"iOS",
"UNIX",
"Primay",
"Secondary",
"Teriary",
"Off line",
"Vint Cerf",
"Charles Babbage",
"Tim Berners-Lee",
"None of these",
"Google",
"Archie",
"Altavista",
"WAIS")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityPlayBinding = ActivityPlayBinding.inflate(layoutInflater)
setContentView(activityPlayBinding.root)
initViews()
}
@SuppressLint("SetTextI18n")
private fun showNextQuestion() {
checkAnswer()
activityPlayBinding.apply {
if (updateQueNo < 10) {
tvNoOfQues.text = "${updateQueNo + 1}/10"
updateQueNo++
}
if (qIndex <= questions.size - 1) {
tvQuestion.text = questions[qIndex]
radioButton1.text = options[qIndex * 4] // 2*4=8
radioButton2.text = options[qIndex * 4 + 1] // 2*4+1=9
radioButton3.text = options[qIndex * 4 + 2] // 2*4+2=10
radioButton4.text = options[qIndex * 4 + 3] // 2*4+3=11
} else {
score = correct
val intent = Intent(this@PlayActivity, ResultActivity::class.java)
intent.putExtra("correct", correct)
intent.putExtra("wrong", wrong)
intent.putExtra("skip", skip)
startActivity(intent)
finish()
}
radiogrp.clearCheck()
}
}
@SuppressLint("SetTextI18n")
private fun checkAnswer() {
activityPlayBinding.apply {
if (radiogrp.checkedRadioButtonId == -1) {
skip++
timeOverAlertDialog()
} else {
val checkRadioButton =
findViewById<RadioButton>(radiogrp.checkedRadioButtonId)
val checkAnswer = checkRadioButton.text.toString()
if (checkAnswer == answer[qIndex]) {
correct++
txtPlayScore.text = "Score : $correct"
correctAlertDialog()
countDownTimer?.cancel()
} else {
wrong++
wrongAlertDialog()
countDownTimer?.cancel()
}
}
qIndex++
}
}
@SuppressLint("SetTextI18n")
private fun initViews() {
activityPlayBinding.apply {
tvQuestion.text = questions[qIndex]
radioButton1.text = options[0]
radioButton2.text = options[1]
radioButton3.text = options[2]
radioButton4.text = options[3]
// check options selected or not
// if selected then selected option correct or wrong
nextQuestionBtn.setOnClickListener {
if (radiogrp.checkedRadioButtonId == -1) {
Toast.makeText(this@PlayActivity,
"Please select an options",
Toast.LENGTH_SHORT)
.show()
} else {
showNextQuestion()
}
}
tvNoOfQues.text = "$updateQueNo/10"
tvQuestion.text = questions[qIndex]
defaultColor = quizTimer.textColors
timeLeftMilliSeconds = countDownInMilliSecond
statCountDownTimer()
}
}
private fun statCountDownTimer() {
countDownTimer = object : CountDownTimer(timeLeftMilliSeconds, countDownInterval) {
override fun onTick(millisUntilFinished: Long) {
activityPlayBinding.apply {
timeLeftMilliSeconds = millisUntilFinished
val second = TimeUnit.MILLISECONDS.toSeconds(timeLeftMilliSeconds).toInt()
// %02d format the integer with 2 digit
val timer = String.format(Locale.getDefault(), "Time: %02d", second)
quizTimer.text = timer
if (timeLeftMilliSeconds < 10000) {
quizTimer.setTextColor(Color.RED)
} else {
quizTimer.setTextColor(defaultColor)
}
}
}
override fun onFinish() {
showNextQuestion()
}
}.start()
}
@SuppressLint("SetTextI18n")
private fun correctAlertDialog() {
val builder = AlertDialog.Builder(this@PlayActivity)
val view = LayoutInflater.from(this@PlayActivity).inflate(R.layout.correct_dialoag, null)
builder.setView(view)
val tvScore = view.findViewById<TextView>(R.id.tvDialog_score)
val correctOkBtn = view.findViewById<Button>(R.id.correct_ok)
tvScore.text = "Score : $correct"
val alertDialog = builder.create()
correctOkBtn.setOnClickListener {
timeLeftMilliSeconds = countDownInMilliSecond
statCountDownTimer()
alertDialog.dismiss()
}
alertDialog.show()
}
@SuppressLint("SetTextI18n")
private fun wrongAlertDialog() {
val builder = AlertDialog.Builder(this@PlayActivity)
val view = LayoutInflater.from(this@PlayActivity).inflate(R.layout.wrong_dialog, null)
builder.setView(view)
val tvWrongDialogCorrectAns = view.findViewById<TextView>(R.id.tv_wrongDialog_correctAns)
val wrongOk = view.findViewById<Button>(R.id.wrong_ok)
tvWrongDialogCorrectAns.text = "Correct Answer : " + answer[qIndex]
val alertDialog = builder.create()
wrongOk.setOnClickListener {
timeLeftMilliSeconds =
countDownInMilliSecond
statCountDownTimer()
alertDialog.dismiss()
}
alertDialog.show()
}
@SuppressLint("SetTextI18n")
private fun timeOverAlertDialog() {
val builder = AlertDialog.Builder(this@PlayActivity)
val view = LayoutInflater.from(this@PlayActivity).inflate(R.layout.time_over_dialog, null)
builder.setView(view)
val timeOverOk = view.findViewById<Button>(R.id.timeOver_ok)
val alertDialog = builder.create()
timeOverOk.setOnClickListener {
timeLeftMilliSeconds = countDownInMilliSecond
statCountDownTimer()
alertDialog.dismiss()
}
alertDialog.show()
}
}Step 11: Open PlayActivity Layout (XML)
<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Techpass Master.-->
<!-- Website - www.techpassmaster.com-->
<!-- Youtube - Techpass Master-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".PlayActivity">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="cursive"
android:gravity="center_horizontal"
android:text="Basic Quiz App"
android:textColor="@color/black"
android:textSize="32sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txt_play_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="Score - 00"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title" />
<TextView
android:id="@+id/tv_noOfQues"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="1/10"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title" />
<TextView
android:id="@+id/quiz_timer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Time - 00"
android:textColor="@color/black"
android:textSize="22sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt_play_score" />
<TextView
android:id="@+id/tv_question"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg"
android:paddingStart="22dp"
android:paddingTop="30dp"
android:paddingEnd="22dp"
android:paddingBottom="30dp"
android:text="Question"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/quiz_timer" />
<RadioGroup
android:id="@+id/radiogrp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/nextQuestionBtn"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_question"
app:layout_constraintVertical_bias="0.095">
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg"
android:drawableEnd="@drawable/a"
android:padding="16dp"
android:text="Option 1"
android:textColor="@color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView6" />
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg"
android:drawableEnd="@drawable/b"
android:padding="16dp"
android:text="Option 2"
android:textColor="@color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radioButton1" />
<RadioButton
android:id="@+id/radioButton3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg"
android:drawableEnd="@drawable/c"
android:padding="16dp"
android:text="Option 3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radioButton2" />
<RadioButton
android:id="@+id/radioButton4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg"
android:drawableEnd="@drawable/d"
android:padding="16dp"
android:text="Option 4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radioButton3" />
</RadioGroup>
<Button
android:id="@+id/nextQuestionBtn"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_marginBottom="22dp"
android:background="@drawable/button_bg"
android:padding="16dp"
android:text="Next Question"
android:textColor="#ffff"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>Step 12: Create and open ResultActivity class
package com.techpassmaster.quizappkotlin
import android.annotation.SuppressLint
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.techpassmaster.quizappkotlin.databinding.ActivityResultBinding
/**
* Created by Techpass Master.
* Website - www.techpassmaster.com
* Youtube - Techpass Master
*/
class ResultActivity : AppCompatActivity() {
private lateinit var activityResultBinding: ActivityResultBinding
var totalScore = 0
var correct = 0
var wrong = 0
var skip = 0
var isKey = false
@SuppressLint("SetTextI18n")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityResultBinding = ActivityResultBinding.inflate(layoutInflater)
setContentView(activityResultBinding.root)
totalScore = intent.extras!!.getInt("correct")
wrong = intent.extras!!.getInt("wrong")
skip = intent.extras!!.getInt("skip")
initializeViews()
}
@SuppressLint("SetTextI18n")
private fun initializeViews() {
activityResultBinding.apply {
tvScore.text = "Score: $totalScore"
tvright.text = "Correct: $totalScore"
tvwrong.text = "Wrong: $wrong"
tvSkip.text = "Skip: $skip"
if (totalScore >= 6) {
activityResultBinding.emojiReactionImg.setImageResource(R.drawable.smile_img)
Toast.makeText(this@ResultActivity, "Wow Great", Toast.LENGTH_SHORT).show()
} else {
emojiReactionImg.setImageResource(R.drawable.angry_img)
Toast.makeText(this@ResultActivity, "Need Improvement", Toast.LENGTH_SHORT).show()
}
tvPlayAgain.setOnClickListener {
finish()
}
}
}
} Step 13: Open activity_result.xml Layout
<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Techpass Master.-->
<!-- Website - www.techpassmaster.com-->
<!-- Youtube - Techpass Master-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/txt_result_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center"
android:text="Your Quiz Result"
android:textColor="@android:color/black"
android:textSize="24sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/emoji_ReactionImg"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginTop="30dp"
android:src="@drawable/angry_img" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_marginBottom="16dp"
android:background="@android:color/white"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tvright"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="12dp"
android:text="Correct: 0"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvwrong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="12dp"
android:text="Wrong: 0"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tvScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="12dp"
android:text="Score: 0"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvSkip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="12dp"
android:text="Skip: 0"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:gravity="bottom"
android:orientation="vertical">
<TextView
android:id="@+id/tvPlayAgain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/bg"
android:gravity="center"
android:padding="16sp"
android:text="Play Again"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/bg"
android:gravity="center"
android:padding="16sp"
android:text="Share Score"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/bg"
android:gravity="center"
android:padding="16sp"
android:text="Rate App"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/bg"
android:gravity="center"
android:padding="16sp"
android:text="Home"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>14. Run And Test The Application.






Congrats! You’ve now completed the Basic Quiz App using Kotlin in Android Studio.
You May Also Like:
- Kotlin tutorial for beginners.
- Kotlin Android Math App In Android Studio.
- How To Make An Android App For Beginners
- Android Interview Questions For Fresher.
- Install & Setup Android Studio Java JDK & SDK.
- Shimmer Effect Android Using Kotlin.
- 5 Best GitHub Repositories For Android Developer.
- 15 Best Useful Sites For Online Learning.

Unresolved reference: correct_dialog in playactivity.kt. Cant solve this issue