Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Android Eğitimleri yazı serimizde bu dersimizde Activity Intent Bundle Kullanımı konusuyla devam ediyoruz.
Activity ler arasında veri transferi için bir çok yöntem bulunsa da(database’e veya shared preferances’a veri yazıp, diğer activity’den okumak gibi) genel olarak Bundle kullanırız.
Bundle ile, bir Activity’den diğerine geçmek için oluşturulan Intent’e data ekleriz. Kısaca Intent ile diğer Activity’e geçme işlemini hatırlayacak olursak:
Intent i = new Intent(getApplicationContext(),NewActivity.class); startActivity(i);
val intent = Intent(this, NewActivity::class.java) startActivity(intent)
Yukarıdaki örneklerde sadece yeni bir Activity açtık. Fakat herhangi bir data göndermedik. Activity Intent Bundle Kullanımı için kullanıcı adını alan ve diğer Activity’e gönderen bir yapıya ihtiyacımız olduğunu düşünelim. Bunun için, kullanıcı adını oluşturduğumuz Intent’in içerisine ekleyeceğiz.
Intent intent = new Intent(getApplicationContext(),NewActivity.class); intent.putExtra("username","Taha Kırca"); startActivity(intent);
val intent = Intent(this, NewActivity::class.java) intent.putExtra("username","Taha Kırca") startActivity(intent)
putExtra metodu ile aşağıdaki veri tiplerini gönderebilirsiniz:
Activity Intent Bundle Kullanımı
Şimdi ilk sayfa da göndermiş olduğumuz değişkeni ikinci sayfada nasıl alabiliriz bakalım. Gönderdiğimiz veriyi karşılayabilmemiz için ilk sayfadaki değişken adı ile buradaki değişken aynı olmalıdır. Aşağıdaki kod parçasında görüldüğü gibi Bundle fonksiyonunu da kullanarak veriyi başarılı bir şekilde almış oluruz. Intent’in içerisine eklediğimiz “username” i ise, açılacak activity’den şu şekilde alabiliriz:
Bundle bundle = getIntent().getExtras(); if(bundle != null){ String user_name = bundle.getString("username"); }
val bundle :Bundle ?=intent.extras if (bundle!=null){ val user_name = bundle.getString("username") }
Activity ler Arasında Intent ile Object Gönderme
Şimdi sayfalarımız arasında object transferi nasıl olur ona bakalım. User classından oluşturduğumuz applicationUser objesini yine string parametresini gönderdiğimiz şekilde gönderdik.
User applicationUser = new User(name,surname); Intent i = new Intent(getApplicationContext(),NewActivity.class); i.putExtra("userObject", applicationUser); startActivity(i);
val applicationUser = User(userName, mail) val intent = Intent(this, NewActivity::class.java) intent.putExtra("userObject", applicationUser as Serializable) startActivity(intent)
İlk sayfada gönderdiğimiz object i ikinci sayfa alma şekline bakalım. Yeni bir intent oluşturup getIntent() fonksiyonu yardımı ile Activity i çağıran intenti alıyoruz. User class’ı tipinde oluşturduğumuz object’i intent üzerinden getSerializableExtra anahtar nesnesi yardımı ile alıyoruz. Burada dikkat edilmesi gereken gönderdiğimiz class tipi ne ise ona cast etmemiz gerekiyor. User tipinde olduğu için User classına cast etmiş olduk gördüğünüz gibi. Böylece object’i başarılı bir şekilde aldık.
Intent i = getIntent(); User applicationUserSecond = (User)i.getSerializableExtra("userObject");
Intent i = getIntent(); val bundle: Bundle? = intent.extras val applicationUserSecond = bundle.getSerializableExtra("userObject") as? User
NOT: ( User classını ikinci Activity de alabilmek ve classın içindeki verilere ulaşabilmek için aşağıdaki gibi implements Serializable yapmamız gerekmektedir )
@Serializable data class User( public val username: String, public val mail: String ) : Serializable
public class User implements Serializable { public String username; public String mail; }
Evet arkadaşlar Android Intent’ler ile Veri Alış Verişi‘ni sizlere detaylıca anlatmaya çalıştım. Umarım hepiniz için faydalı olmuştur.
Sıfırdan android dersleri için tıklayınız.
Mobilhanem.com üzerinden anlattığımız android uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.
Bir daha ki dersimizde görüşmek dileğiyle..
91