Android uygulamalarında, farklı aktiviteler arasında veri taşımak ve yeni aktiviteler başlatmak için Intent
yapısı kullanılır. Intent’ler, uygulama içi veya uygulamalar arası iletişimi sağlamak için oldukça güçlü bir araçtır. Bu makalede, iki sayıyı toplayan ve sonucu başka bir aktivitede gösteren basit bir Android uygulaması üzerinden Intent kullanımını inceleyeceğiz.
1. Intent Nedir?
Intent, Android’de bir bileşenin (örneğin, bir aktivitenin) başka bir bileşeni başlatmasını sağlayan bir mesajlaşma nesnesidir. Intent’ler, aktiviteler arasında veri taşımak, servisleri başlatmak veya yayın (broadcast) göndermek gibi çeşitli amaçlar için kullanılır.
2. Uygulama Senaryosu
Bu örnekte, kullanıcının iki sayı girdiği bir ana aktivite (MainActivity) ve bu sayıların toplamını gösteren bir sonuç aktivitesi (ResultActivity) oluşturacağız. Kullanıcı “Topla” butonuna tıkladığında, MainActivity’den ResultActivity’ye Intent ile veri göndereceğiz.
3. Uygulamanın Adımları
3.1. MainActivity Oluşturma
MainActivity, kullanıcının iki sayıyı girebileceği bir arayüz sunar. Kullanıcı “Topla” butonuna tıkladığında, bu sayılar toplanır ve sonuç, ResultActivity’ye Intent ile gönderilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | package com.example.intenttoplama; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; public class MainActivity extends AppCompatActivity { EditText editTextSayi1, editTextSayi2; Button buttonTopla; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_main); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); editTextSayi1 = findViewById(R.id.editText_sayi1); editTextSayi2 = findViewById(R.id.editText_sayi2); buttonTopla = findViewById(R.id.button_topla); buttonTopla.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int sayi1 = Integer.parseInt(editTextSayi1.getText().toString()); int sayi2 = Integer.parseInt(editTextSayi2.getText().toString()); int toplam = sayi1 + sayi2; // Intent oluşturma ve veri ekleme Intent intent = new Intent(MainActivity.this, ResultActivity.class); intent.putExtra("sonuc", sayi1 + " + " + sayi2 + " = " + toplam); startActivity(intent); } }); } } |
3.2. ResultActivity Oluşturma
ResultActivity, MainActivity’den gelen sonucu gösterir. Intent’ten gelen veriyi alır ve TextView’de görüntüler.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package com.example.intenttoplama; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; public class ResultActivity extends AppCompatActivity { TextView textViewSonuc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_result); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); textViewSonuc = findViewById(R.id.textView_sonuc); // Intent'ten veriyi alma Intent intent = getIntent(); String sonuc = intent.getStringExtra("sonuc"); textViewSonuc.setText(sonuc); } } |
3.3. Layout Dosyaları
activity_main.xml (MainActivity için layout):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <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="16dp"> <EditText android:id="@+id/editText_sayi1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Birinci Sayı" android:inputType="number"/> <EditText android:id="@+id/editText_sayi2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="İkinci Sayı" android:inputType="number"/> <Button android:id="@+id/button_topla" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Topla"/> </LinearLayout> |
activity_result.xml (ResultActivity için layout):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <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="16dp"> <TextView android:id="@+id/textView_sonuc" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="24sp" android:gravity="center"/> </LinearLayout> |
4. Intent ile Veri Taşıma
Intent ile veri taşımak için putExtra()
metodu kullanılır. Bu metod, anahtar-değer çiftleri şeklinde veri ekler. Örneğimizde, sonuc
anahtarı ile toplam sonucunu ResultActivity’ye gönderdik.
1 2 3 | intent.putExtra("sonuc", sayi1 + " + " + sayi2 + " = " + toplam); |
ResultActivity’de ise getIntent()
metodu ile Intent alınır ve getStringExtra()
metodu ile veri çekilir.
1 2 3 | String sonuc = intent.getStringExtra("sonuc"); |
5. Sonuç
Bu örnekte, Android’de Intent kullanarak iki aktivite arasında nasıl veri taşınabileceğini gördük. Intent’ler, uygulama geliştirirken farklı bileşenler arasında iletişim kurmak için oldukça kullanışlıdır. Bu temel örnek, daha karmaşık senaryolarda da Intent’lerin nasıl kullanılabileceğine dair bir fikir vermektedir.
Intent’ler, sadece aktiviteler arasında değil, servisler ve yayın alıcıları (broadcast receivers) arasında da veri taşımak için kullanılabilir. Bu nedenle, Android geliştiricileri için Intent kavramını iyi anlamak oldukça önemlidir.