QUIZ UYGULAMASI
Quiz uygulaması, kullanıcıya belirli sorular yönelten ve verdiği cevaplara göre puan hesaplayan bir mobil uygulamadır. Bu tür projeler, hem eğlenceli hem de öğretici olduğu için özellikle yeni başlayanlar için idealdir.
Bu uygulama sayesinde; Intent kullanımı, veri aktarımı (putExtra), buton işlemleri, dizi (array) mantığı ve temel uygulama akışını pratik bir şekilde öğrenebilirsiniz.
UYGULAMA ÖZELLİKLERİ
Geliştireceğimiz uygulama şu özelliklere sahip olacaktır:
- Başlangıç ekranı (Quiz başlatma)
- Soru ekranı (4 şıklı sorular)
- Doğru/yanlış kontrolü
- Anlık geri bildirim (Toast mesajı)
- Skor hesaplama
- Sonuç ekranı
KULLANILAN TEMEL KAVRAMLAR
Bu proje ile aşağıdaki Android konularını öğrenmiş olacaksınız:
- XML ile arayüz tasarımı
- Java ile işlem yapma
- Button click event
- Intent ile ekran geçişi
- putExtra ile veri gönderme
- getIntent ile veri alma
- Array kullanımı
- if-else kontrol yapısı
PROJE MANTIĞI
Uygulama akışı:
- Açılış ekranı gelir
- “Quize Başla” butonuna basılır
- Sorular tek tek gösterilir
- Her soruda 4 şık olur
- Cevap kontrol edilir
- Tüm sorular bitince sonuç ekranına geçilir
- Skor gösterilir
Bu projede 3 activtiy olacak:
- MainActivity → Başlat butonu
- QuizActivity → Sorular ve şıklar
- ResultActivity → Sonuç ekranı
1 SORU VERİLERİNİN TANIMLANMASI
Sorular ve cevaplar Java içinde diziler (array) ile tutulur. Bu yapı sayesinde her soruya ait seçenekleri ve doğru cevapları kolayca yönetebilirsiniz.
String[] sorular = {
"Türkiye'nin başkenti neresidir?",
"Android'de arayüz hangi dosya ile yapılır?"
};
String[][] secenekler = {
{"İstanbul", "Ankara", "İzmir", "Bursa"},
{"Java", "XML", "SQLite", "Intent"}
};
String[] dogruCevaplar = {
"Ankara",
"XML"
};
2 CEVAP KONTROLÜ
Kullanıcı bir seçeneğe bastığında cevap kontrol edilir. Bu sayede kullanıcıya anlık geri bildirim verilir ve puan güncellenir.
if (secilenCevap.equals(dogruCevaplar[soruIndex])) {
Toast.makeText(this, "Doğru cevap!", Toast.LENGTH_SHORT).show();
puan++;
} else {
Toast.makeText(this, "Yanlış cevap!", Toast.LENGTH_SHORT).show();
}
3 INTENT ILE VERİ GÖNDERME
Quiz tamamlandığında skor, sonuç ekranına gönderilir:
Intent intent = new Intent(QuizActivity.this, ResultActivity.class);
intent.putExtra("skor", puan);
intent.putExtra("toplam", sorular.length);
startActivity(intent);
4 VERİ ALMA (ResultActivity)
Gönderilen veriler şu şekilde alınır.Bu değerler ekranda kullanıcıya gösterilir.
int skor = getIntent().getIntExtra("skor", 0);
int toplam = getIntent().getIntExtra("toplam", 0);
5 SONUÇ EKRANI
Kullanıcıya skor gösterilir:
txtSonuc.setText("Skorunuz: " + skor + " / " + toplam);
İsterseniz başarı durumuna göre mesaj da ekleyebilirsiniz:
if (skor == toplam) {
txtSonuc.setText("Mükemmel! " + skor + "/" + toplam);
}
XML VE JAVA KODLARI
Projede kullanılan 3 activty XML ve JAVA dosyaları asağıdaki gibi olacaktır.
1 MAIN ACTIVITY XML
Bu XML dosyası, uygulamanın başlangıç ekranını oluşturur. Kullanıcıyı karşılayan başlık ve “Quize Başla” butonu burada tanımlanmıştır. Butona tıklandığında kullanıcı quiz ekranına yönlendirilir.

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
android:padding="24dp">
<TextView
android:id="@+id/txtBaslik"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bilgi Yarışmasına Hoş Geldin"
android:textSize="24sp"
android:textStyle="bold"
android:layout_marginBottom="30dp" />
<Button
android:id="@+id/btnBasla"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Quize Başla" />
</LinearLayout>
2) MAIN ACTIVITY JAVA
MainActivity, uygulamanın ilk açılan ekranıdır. Bu sınıfta, başlat butonuna tıklanma olayı yakalanır ve Intent kullanılarak kullanıcı QuizActivity ekranına yönlendirilir.
MainActivity.java
package com.example.quizapp;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
Button btnBasla;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnBasla = findViewById(R.id.btnBasla);
btnBasla.setOnClickListener(v -> {
Intent intent = new Intent(MainActivity.this, QuizActivity.class);
startActivity(intent);
});
}
}
3) QUIZ EKRANI XML
Bu ekran, kullanıcıya soruların gösterildiği ana quiz ekranıdır. Soru metni ve dört farklı seçenek butonları XML ile tasarlanmıştır. Kullanıcı bu butonlar üzerinden cevap verir.

activity_quiz.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:id="@+id/txtSoruNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Soru 1"
android:textSize="18sp"
android:textStyle="bold"
android:layout_marginBottom="20dp" />
<TextView
android:id="@+id/txtSoru"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Soru burada görünecek"
android:textSize="22sp"
android:layout_marginBottom="30dp" />
<Button
android:id="@+id/btnA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A Şıkkı"
android:layout_marginBottom="12dp" />
<Button
android:id="@+id/btnB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="B Şıkkı"
android:layout_marginBottom="12dp" />
<Button
android:id="@+id/btnC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="C Şıkkı"
android:layout_marginBottom="12dp" />
<Button
android:id="@+id/btnD"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="D Şıkkı" />
</LinearLayout>
4) RESULT EKRANI XML
Bu XML dosyası, quiz tamamlandıktan sonra kullanıcıya sonuçların gösterildiği ekranı tanımlar. Kullanıcının aldığı puan ve tekrar başlatma butonu bu ekranda yer alır.

activity_result.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
android:padding="24dp">
<TextView
android:id="@+id/txtSonuc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Skorunuz: 0"
android:textSize="28sp"
android:textStyle="bold"
android:layout_marginBottom="24dp" />
<Button
android:id="@+id/btnTekrar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tekrar Oyna" />
</LinearLayout>
5) QUIZACTIVITY JAVA
QuizActivity sınıfı, uygulamanın ana mantığını içerir. Sorular diziler halinde tutulur, kullanıcıdan gelen cevaplar kontrol edilir ve doğru cevaplara göre puan hesaplanır. Ayrıca Toast mesajları ile kullanıcıya anlık geri bildirim sağlanır.
QuizActivity.java
package com.example.quizapp;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class QuizActivity extends AppCompatActivity {
TextView txtSoruNo, txtSoru;
Button btnA, btnB, btnC, btnD;
String[] sorular = {
"Türkiye'nin başkenti neresidir?",
"Android uygulamalarında arayüz tasarımı genelde hangi dosya ile yapılır?",
"Java'da ekrana yazı yazdırmak için hangisi kullanılır?"
};
String[][] secenekler = {
{"İstanbul", "Ankara", "İzmir", "Bursa"},
{"Java", "XML", "SQLite", "Intent"},
{"System.out.println()", "printText()", "showMessage()", "echo()"}
};
String[] dogruCevaplar = {
"Ankara",
"XML",
"System.out.println()"
};
int soruIndex = 0;
int puan = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
txtSoruNo = findViewById(R.id.txtSoruNo);
txtSoru = findViewById(R.id.txtSoru);
btnA = findViewById(R.id.btnA);
btnB = findViewById(R.id.btnB);
btnC = findViewById(R.id.btnC);
btnD = findViewById(R.id.btnD);
soruyuGoster();
btnA.setOnClickListener(v -> cevapKontrol(btnA.getText().toString()));
btnB.setOnClickListener(v -> cevapKontrol(btnB.getText().toString()));
btnC.setOnClickListener(v -> cevapKontrol(btnC.getText().toString()));
btnD.setOnClickListener(v -> cevapKontrol(btnD.getText().toString()));
}
private void soruyuGoster() {
txtSoruNo.setText("Soru " + (soruIndex + 1));
txtSoru.setText(sorular[soruIndex]);
btnA.setText(secenekler[soruIndex][0]);
btnB.setText(secenekler[soruIndex][1]);
btnC.setText(secenekler[soruIndex][2]);
btnD.setText(secenekler[soruIndex][3]);
}
private void cevapKontrol(String secilenCevap) {
if (secilenCevap.equals(dogruCevaplar[soruIndex])) {
Toast.makeText(this, "Doğru cevap!", Toast.LENGTH_SHORT).show();
puan++;
} else {
Toast.makeText(this, "Yanlış cevap!", Toast.LENGTH_SHORT).show();
}
soruIndex++;
if (soruIndex < sorular.length) {
soruyuGoster();
} else {
Intent intent = new Intent(QuizActivity.this, ResultActivity.class);
intent.putExtra("skor", puan);
intent.putExtra("toplam", sorular.length);
startActivity(intent);
finish();
}
}
}
6) RESULTACTIVITY JAVA
ResultActivity, quiz sonunda kullanıcının skorunu gösterir. Önceki ekrandan Intent ile gönderilen veriler alınarak kullanıcıya sunulur. Ayrıca kullanıcı isterse uygulamayı yeniden başlatabilir.
ResultActivity.java
package com.example.quizapp;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class ResultActivity extends AppCompatActivity {
TextView txtSonuc;
Button btnTekrar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
txtSonuc = findViewById(R.id.txtSonuc);
btnTekrar = findViewById(R.id.btnTekrar);
int skor = getIntent().getIntExtra("skor", 0);
int toplam = getIntent().getIntExtra("toplam", 0);
txtSonuc.setText("Skorunuz: " + skor + " / " + toplam);
btnTekrar.setOnClickListener(v -> {
Intent intent = new Intent(ResultActivity.this, MainActivity.class);
startActivity(intent);
finish();
});
}
}
Android Studio ile geliştirilen bu basit quiz uygulaması, mobil programlamaya giriş yapan herkes için mükemmel bir başlangıç projesidir. Öğrendiğiniz teorik bilgileri pratiğe dökerek çok daha hızlı ilerleyebilirsiniz.