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 )
0

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)

16 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 ?

  • Merhaba, yazınız oldukça faydalı ve işime yaradı bir kaç kısımda bu sebeple öncelikle teşekkür etmek isterim. Fakat şöyle bir problemim var yardımcı olabilirseniz çok makbule geçer. Benim alttaki gibi bir BloggerApi.class’ım var ben buraya eklediğim linkimdeki veriyi mainactivty’e sorunsuz olarak çekiyorum. Problem ise şurada başlıyor ben sabit tüm içeriği değilde butonlar yardımı ile Yeni Konular, Popüler Konular v.s gibi bir kaç farklı başlıktaki özel konuları çekmek istiyorum. Dolayısıyla bu butonlara link tanımlayacağım ve bu linkleri alttaki kodda yer alan “public static final String url ” içeriğine aktaracağım bu durumu başaramadım. Nasıl yapabileceğim konusunda yardımcı olabilir misiniz? Yani böyle bir şey mümkün müdür? Anlayış ve yardımınız için şimdiden çok teşekkür ederim.

    —-Kod—-
    public class BloggerAPI {
    public static final String key = “buraya_key_kod”;
    public static final String url = “buraya_link”;

    public static PostService postService = null;

    public static PostService getService()
    {
    if(postService == null)
    {
    Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(url)
    .addConverterFactory(GsonConverterFactory.create())
    .build();

    postService = retrofit.create(PostService.class);
    }
    return postService;
    }
    public interface PostService {
    @GET
    Call getPostList(@Url String url);
    }
    }
    —-Kod—–

    • Problemimi araştırmalarım sonucunda büyük oranda çözdüm, bu konuyla alakalı bir durum değilmiş. Teşekkür ederim.

Haftalık Bülten

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