Android’de, aktiviteler arasında veri taşımak için birkaç yöntem vardır. Bu makalede Intent ile activity ler arası veri taşıma nasıl yapılır bunu göreceksiniz.
Intent ile Veri Taşıma: Bu yöntemde, bir aktiviteden diğerine veri taşımak için bir Intent oluşturulur ve putExtra() yöntemi kullanılarak veriler eklenir. Alıcı aktivitede, getIntent() yöntemi kullanılarak Intent alınır ve getExtra() yöntemi ile veriler alınır.
Örnek kod:
Aktiviteden veri gönderme:
1 2 3 4 5 | Intent intent = new Intent(Aktivite1.this, Aktivite2.class); intent.putExtra("anahtar", "değer"); startActivity(intent); |
Alıcı aktivitede veri alma:
1 2 3 4 | Intent intent = getIntent(); String veri = intent.getStringExtra("anahtar"); |
Şimdi bunula ilgili bir örnek yapalım. Örneğimizde activity_main.xml dosyamızda 3 adet EditText ve 1 adet Button bulunmakta. activity_main2.xml dosyamızda ise 1 adet TextView bulunmaktadır.
MainActivity dosymızda Button tıklandığı zaman EditText denetimlerine girilen verilerin diğer activity’ e taşınmasını sağlayalım.
activity_main.xml dosyamız:
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 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp" tools:context=".MainActivity"> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Veri 1" /> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Veri 2" /> <EditText android:id="@+id/editText3" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Veri 3" /> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Geçiş Yap" /> </LinearLayout> |
activity_main2.xml dosyamız:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xml version="1.0" encoding="utf-8"?> <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=".MainActivity2"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:text="TextView" android:textSize="20sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> |
MainActivity.java dosyamız:
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 | package com.example.activityveritasima; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { EditText editText1, editText2, editText3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText1 = findViewById(R.id.editText1); editText2 = findViewById(R.id.editText2); editText3 = findViewById(R.id.editText3); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, MainActivity2.class); intent.putExtra("veri1", editText1.getText().toString()); intent.putExtra("veri2", editText2.getText().toString()); intent.putExtra("veri3", editText3.getText().toString()); startActivity(intent); } }); } } |
Yukarıdaki kodda, ana aktivitemizin onCreate() yönteminde EditText’leri ve Button’u tanımlıyoruz. Daha sonra, Button’a bir OnClickListener ekleyerek tıklama olayını dinliyoruz. Button tıklandığında, Intent sınıfından bir nesne oluşturuyoruz ve diğer aktiviteye geçmek için startActivity() yöntemini kullanıyoruz. Intent nesnesine putExtra() yöntemi ile verileri ekliyoruz. Bu verileri diğer aktivitede almak için, anahtar değerleri kullanacağız. Şimdi diğer aktivitemizde bu verileri nasıl alacağımıza bakalım.
MainActivity2.java dosyası:
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 | package com.example.activityveritasima; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class MainActivity2 extends AppCompatActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); textView=findViewById(R.id.textView); Intent intent = getIntent(); String veri1 = intent.getStringExtra("veri1"); String veri2 = intent.getStringExtra("veri2"); String veri3 = intent.getStringExtra("veri3"); String veriler = "Veri 1: " + veri1 + "\n" + "Veri 2: " + veri2 + "\n" + "Veri 3: " + veri3; textView.setText(veriler); } } |
Bu kod, MainActivity2’de, onCreate() yöntemindeki kod bloğudur. Bu kod bloğu, diğer aktiviteden gönderilen verileri alır ve TextView’e yazdırır.
İlk olarak, getIntent() yöntemi ile diğer aktiviteden gelen Intent nesnesini alırız. Daha sonra, getStringExtra() yöntemi ile bu intent nesnesi içindeki “veri1”, “veri2” ve “veri3” anahtarlarına karşılık gelen değerleri alırız.
Bu değerleri daha sonra “Veri 1: “, “Veri 2: ” ve “Veri 3: ” gibi metinlerle birleştiririz ve son olarak oluşan metni textView.setText() yöntemi ile TextView’e yazdırırız.
Bu şekilde, diğer aktiviteden aldığımız verileri MainActivity2’de görüntüleyebiliriz.
Not:
Intent kullanımında, String ve sayısal veriler arasında farklılıklar vardır.
String veriler, putExtra() yöntemi kullanılarak Intent nesnesine eklenirken, sayısal veriler getStringExtra() yöntemi yerine getIntExtra() veya getFloatExtra() yöntemi kullanılarak eklenir.
Örneğin, ana aktiviteden MainActivity2‘ye geçirilen bir sayısal değer için aşağıdaki örneği inceleyebilirsiniz.:
1 2 3 4 5 6 | int sayi = 10; Intent intent = new Intent(MainActivity.this, MainActivity2.class); intent.putExtra("sayi", sayi); startActivity(intent); |
Daha sonra, MainActivity2’de sayısal değeri getIntExtra() yöntemi ile alabiliriz. Aşağıdaki örnek, MainActivity2’de sayısal değeri getIntExtra() yöntemi ile alır:
1 2 3 4 | Intent intent = getIntent(); int sayi = intent.getIntExtra("sayi", 0); // default olarak 0 değeri atanır |
Ayrıca, sayısal değerler için putFloat() veya putDouble() yöntemleri de kullanılabilir.
Özetle sayısal veriler getIntExtra(), getFloatExtra() veya getDoubleExtra() yöntemleri ile alınabilir.