Android geliştiricileri olarak çoklu ekranlarda çalışmamız gerekebiliyor. Bu durumlarda activity yada fragment kullanabiliyoruz. Bu yazımda size çoklu activity kullanımı ve activity’ler arası veri paylaşımını anlatacağım.
Öncelikle intent şemamıza bakalım.
Yedek Activity Ekleme
Öncelikle MainActivity oluşturduğumuz projeden sonra otomatik olarak oluşturuluyor. Şimdi yedek activity ekleyelim ve ana activityden gireceğimiz değerleri yedek activityde gösterelim.
File > New > Activity > Empty Activity seçerek activity seçiyoruz.
Açılan ekranda Activity Name kısmına YedekActivity yazıyoruz ve finish butonu ile yeni activity ekliyoruz.
MainActivity.java
Ana Ekran tasarımımız.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" android:gravity="center" tools:context=".MainActivity"> <EditText android:id="@+id/editAd" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Ad" android:layout_margin="15dp"/> <EditText android:id="@+id/editSoyad" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Soyad" android:layout_margin="15dp"/> <Button android:id="@+id/btnGonder" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:text="Gönder"/> </LinearLayout>
View’leri tanımlıyoruz.
EditText editAd = findViewById(R.id.editAd); EditText editSoyad = findViewById(R.id.editSoyad); Button btnGonder = findViewById(R.id.btnGonder);
Şimdi butonumuzun click event’ini ekliyoruz.
btnGonder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } });
Ve buton event’imiz bu şekilde.
btnGonder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String isim = editAd.getText().toString(); //editAd edittextinden değeri isim değişkenine aldık String soyisim = editSoyad.getText().toString();//editSoyad edittextinden değeri soyisim değişkenine aldık Bundle bundle = new Bundle(); bundle.putString("name", isim); //'name' key'ine isim değişkenini verdik bundle.putString("surnmame", soyisim);//'surname' key'ine soyisim değişkenini verdik. //Buradaki keyler çok önemli YedekActivity'de verileri alırken bu keyleri harfiyen yazmamız gerek. //Büyük küçük harf duyarlıdır. Intent intent = new Intent(getApplicationContext(), YedekActivity.class); //intentimizi oluşturduk. bir context verdik ve gideceğimiz YedekActivity sınıfını verdik. intent.putExtras(bundle); //bundle değerimizi intente aktardık startActivity(intent); //activity başlattık //eğer diğer activity'e geçtikten sonra MainActivity kapansın isterseniz finish(); //methodunu çağırmalısınız. } });
MainActivity.class son hali.
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText editAd = findViewById(R.id.editAd); final EditText editSoyad = findViewById(R.id.editSoyad); Button btnGonder = findViewById(R.id.btnGonder); btnGonder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String isim = editAd.getText().toString(); //editAd edittextinden değeri isim değişkenine aldık String soyisim = editSoyad.getText().toString();//editSoyad edittextinden değeri soyisim değişkenine aldık Bundle bundle = new Bundle(); bundle.putString("name", isim); //'name' key'ine isim değişkenini verdik bundle.putString("surname", soyisim);//'surname' key'ine soyisim değişkenini verdik. //Buradaki keyler çok önemli YedekActivity'de verileri alırken bu keyleri harfiyen yazmamız gerek. //Büyük küçük harf duyarlıdır. Intent intent = new Intent(getApplicationContext(), YedekActivity.class); //intentimizi oluşturduk. bir context verdik ve gideceğimiz YedekActivity sınıfını verdik. intent.putExtras(bundle); //bundle değerimizi intente aktardık startActivity(intent); //activity başlattık //eğer diğer activity'e geçtikten sonra MainActivity kapansın isterseniz finish(); //methodunu çağırmalısınız. } }); } }
YedekActivity.java
Yedek Ekran tasarımımız.
activity_yedek.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" android:gravity="center" tools:context=".YedekActivity"> <TextView android:id="@+id/textSonuc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="25sp"/> </LinearLayout>
Şimdi TextView’imizi tanımlayalım.
TextView textSonuc = findViewById(R.id.textSonuc);
Son olarak gelen değeri Intent olarak alıp yazdıralım.
Intent intent = getIntent(); //Gelen intent'i aldık. String isim = intent.getStringExtra("name"); //MainActivity'deki 'name' keyi ile aldık. String soyisim = intent.getStringExtra("surname"); //MainActivity'deki 'surname' keyi ile aldık. textSonuc.setText("Ad: " + isim + "\nSoyad: " + soyisim); //Ve sonucu yazdırdık.
Son olarak YedekActivity.java dosyamızın son hali.
public class YedekActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_yedek); TextView textSonuc = findViewById(R.id.textSonuc); Intent intent = getIntent(); //Gelen intent'i aldık. String isim = intent.getStringExtra("name"); //MainActivity'deki 'name' keyi ile aldık. String soyisim = intent.getStringExtra("surname"); //MainActivity'deki 'surname' keyi ile aldık. textSonuc.setText("Ad: " + isim + "\nSoyad: " + soyisim); //Ve sonucu yazdırdık. } }
Bu yazıda android çoklu activity ve veri paylaşımı konusuna yer verdik. Soru, görüş ve önerileriniz için lütfen yorum yapmayı unutmayın.