Giriş
Günümüz mobil uygulamalarında kullanıcı deneyimini belirleyen en önemli unsurlardan biri, verinin uygulama içinde ne kadar akıcı ve güvenli taşındığıdır. İster basit bir not defteri, ister karmaşık bir okul yönetim sistemi yapın; ekranlar arası iletişim (Inter-Activity Communication) işin kalbidir.
Bu rehberde, bir Öğrenci Yoklama Sistemi senaryosu üzerinden; verinin MainActivity üzerinde nasıl toplandığını, INTENT mekanizmasıyla goster aktivitesine nasıl aktarıldığını inceleyeceğiz.
1. Kullanıcı Giriş Ekranı ve Veri Kontrolü: MainActivity.java
Uygulamanın başlangıç noktası olan bu bölümde, kullanıcının girdiği verilerin doğruluğu denetlenir. Eğer veriler uygunsa, bir sonraki aşamaya geçiş süreci başlatılır.
package com.example.myapplication;import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;import android.view.View;import android.widget.EditText;import android.widget.Button;import android.content.Intent;import android.widget.Toast;public class MainActivity extends AppCompatActivity {
EditText ad, soyad;
Button btnDevam;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ad = findViewById(R.id.ad);
soyad = findViewById(R.id.soyad);
btnDevam = findViewById(R.id.btnDevam);
btnDevam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String adStr = ad.getText().toString().trim();
String soyadStr = soyad.getText().toString().trim();
if (adStr.isEmpty() || soyadStr.isEmpty()) {
Toast.makeText(MainActivity.this,
"Öğrenci bilgilerini girin!",
Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(MainActivity.this, goster.class);
intent.putExtra("ad", adStr);
intent.putExtra("soyad", soyadStr);
startActivity(intent);
}
});
}
}
2. Veri Yakalama ve Sonuç Ekranı: goster.java
Bu aşamada, ilk ekrandan gönderilen "ad" ve "soyad" paketleri yakalanır. Uygulama mantığına göre işlenen bu veriler, kullanıcıya bir liste veya bildirim olarak sunulur. finish() komutu sayesinde kullanıcı kolayca başa dönebilir.
package com.example.myapplication;import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;import android.view.View;import android.widget.TextView;import android.widget.Button;import android.content.Intent;public class goster extends AppCompatActivity {
TextView bilgiler;
Button btnYeni;
bizimdb db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_goster);
db = new bizimdb(this);
bilgiler = findViewById(R.id.bilgiler);
btnYeni = findViewById(R.id.btnYeni);
Intent intent = getIntent();
String ad = intent.getStringExtra("ad");
String soyad = intent.getStringExtra("soyad");
if (ad == null) ad = "";
if (soyad == null) soyad = "";
db.uyeEkle(ad, soyad);
String liste = db.tumUyeleriGetir();
bilgiler.setText("Bugünkü Yoklama:\n\n" + liste);
btnYeni.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
3. Uygulama Kayıt Dosyası: AndroidManifest.xml
Android sistemine hangi sayfaların (Activity) bulunduğunu ve uygulamanın hangi sayfayla açılacağını bildiren yapılandırma dosyasıdır.
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/Theme.MyApplication">
<activity android:name=".goster" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application></manifest>
Özet ve Teknik Akış
Uygulamanın çalışma prensibi Intent mekanizmasına dayanır. MainActivity üzerinde toplanan kullanıcı girişleri, putExtra metoduyla paketlenir. goster aktivitesi açıldığında ise bu paket açılarak veriler ekrana yansıtılır.
Bu yöntem, Android uygulamalarında ekranlar arası dinamik bilgi paylaşımının en temel ve güvenli yoludur. Kullanıcı "Yeni" butonuna bastığında finish() fonksiyonu tetiklenerek mevcut ekran kapatılır ve kullanıcı hiyerarşik olarak bir önceki giriş ekranına geri döner. Bu akış, bellek yönetimi açısından da verimlidir çünkü gereksiz aktivite yığılmasını önler.