Android Intent’ler ile Veri Alış Verişi

Activity ler arasında veri transferi için kullanırız.

Örnek kod, bir sayfadan diğer sayfaya string göndermek için oluşturulmuştur. s değişkenine atadığımız veriyi ikinci sayfa da alabilmek için “send_string” adında bir parametreyi kendimiz belirledik bu yüzden oraya her hangi bir isim yazabiliriz. Daha sonradan da intent fonksiyonun düzgün bir şekilde çalışabilmesi için startActivity ile başlattık.

Ş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.

Activity ler arasında object gönderme

Şimdi sayfalarımız arasında object transferi nasıl olur ona bakalım. Student classından oluşturduğumuz std objesini yine string parametresini gönderdiğimiz şekilde gönderdik.

ilk sayfada gönderdiğimiz object yi ikinci sayfa alma şekline bakalım. Yeni bir intent oluşturup getIntent() fonksiyonu yardımı ile Activity i çağıran intenti alıyoruz. Student classı tipinde oluşturduğumuz object yi 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. Student tipinde olduğu için Student classına cast etmiş olduk gördüğünüz gibi. Böylece object yi başarılı bir şekilde aldık.
NOT: ( Student 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 )

Alper Beyler

Yüksek Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği
Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği (4/3.30) (2010-2014)
Lisans : Viyana Teknik Üniversitesi / Bilgisayar Bilimleri (2013)

14 Yorum

  • Peki ben 1. activity’ den ikinci activity’ me , ikinci activitideki işlemlerim bitince bir sonraki gececeği activity’i putextra ile yollayabılır mıyım ?

    • Merhaba, activity ler arası geçişlerde evet putExtra ile veri gönderebilirsiniz. activity kapandığı anda bir önceki activity e düştüğünde onActivityResult ile kontrol edebilirsin. startActivityForResult ile activity başlatman gerekiyor bu dediğim kavramları bir araştır yine sorun olursa sorabilirsin.

      • Alper Bey dediğiniz araştırmaları yaptım. Ama istediğim sonuca ulasamadım. Benım Sorum basit bir örnekle şu :

        Benim projemde 3 tane aktivitem var adlarıda A,B,C.

        Aktivite A dan B ye gecerken ben B aktivitesine Activity tipinde bir değişken yollamak istiyorum sonra B aktivitesinden işlemlerim bitince B aktivitesinden sonra gececegı aktivity A aktivitesinden Activity tipindeki değişkene gore karar vermek istiyorum.

        Aklımda bir yöntem var ama komplike projemde işe yaramadığı için çözüm olarak kullanamamıyorum.Yöntemimi Anlatayım buda belki sorunu anlatmam için yardımcı olabılır.

        A Aktivitesi ;

        Intent intent=new Intent(A.this,B.class);
        intent.putExtra(“gecilecek_aktivity”,’A’);
        startActivity(intent);

        B Aktivitesi

        //İşlemlerimi Yaptıktan sonra Aktiviteden cıkarken
        Intent intent=getIntent();
        String sonraki_aktivity=intent.getStringExtra(“gecilecek_aktivity”);

        if( sonraki_aktivity==’A’){
        //A aktivitesinden Geri A ya gelecegı geldıgı için geri a ya gelecek
        Intent intent=new Intent(B.this,A.class);
        startActivity(intent);
        }else if(sonraki_aktivity==’C’){
        //A aktivitesinden C ye gelecegı emri geldıgı için C ye gececek
        Intent intent=new Intent(B.this,C.class);
        startActivity(intent);
        }

        Ama bu gelişmiş bir proje için saglıklı bır yontem olduğuna inanmıyorum ben putExtra ile örneğin ;

        Intent intent=new Intent(A.this,B.class);
        intent.putExtra(“gecilecek_aktivity”,C.class);
        startActivity(intent);

        put extra ile direk hedef aktivity yollayıp ;
        Intent intent=getIntent();
        Activity sonraki_aktivity=intent.getExtra(“gecilecek_aktivity”);

        Sonra
        Intent intent=new Intent(A.this,sonraki_activity);
        startActivity(intent);

        yapmak istiyorum çok uzattım yardım edersenız sevınırım.

  • Merhabalar , ben activityler arası nesne dizisi geçirirken sıkıntı alıyorum . Kendi yarattığım bir Channel classım var Serializable implement ettim , bir classta channels[] dizisi üretip aynı yöntemle başka class a geçirirken “java.lang.Object[] cannot be cast to com.mosstech.StarRadio.Models.Channel[]” hatası alıyorum yani (Channel[]) şeklinde cast edemiyorum . İki activity arası nesne dizisini nasıl geçirebilirim ?

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?