Bu yazımızda android programlamada sayfalar arası veri transferi nasıl yapılır bunu göstereceğiz. Projemize başlamadan önce biraz Intent ile ilgili bilgi verecek olursak; Intent kavramı android programlamada bizim sayfalar arası geçiş yapmamızın yanı sıra veri taşımamıza yardım eden bir bileşendir. Bu projede biz Intent ile edittext’e girilen bir veriyi tanımladığımız başka bir sınıfa taşıyacağız. Projemizi oluşturduktan sonra activity_main.xml içine bir adet buton,textview ve edittext atıyoruz. Ve activity_main.xml içi görüntümüz şu şekilde olmaktadır.
activity_main.xml dosyamızı ayarladıktan sonra şimdi MainActivity.java sınıfımızın içine gerekli olan kodları yazacağız.
Bu sınıfımıza ilk olarak eklemiş olduğumuz buton, editText ve textView componentlerını tanımlıyoruz. Bu kısmı kesinlikle yapmak zorundayız.Çünkü bu kısmı yapmazsak eğer activity_main.xml içine sürükleyip bıraktığımız componentlerı kullanamayız. Tanımlamaları yaptıktan sonra şimdi butonumuza tıklama olayını ve tıklandıktan sonra ne yapacağını kodlayacağız.
Bu kod satırını inceleyecek olursak eğer ; tıklama fonksiyonu içiresine yani onClick() metodu içerisine ilk satırda Intent ile nesnemizi türetiyoruz. Bu nesne adına ben intent ismini verdim siz dileğidiniz ismi verebilirsiniz. Bu satırdan sonra şimdi sıra göndermek istediğimiz verimize sıra geliyor. Veri gönderme işlemini intent.putExtra() satırı ile sağlıyoruz. İki parametre alır. Bu parametrelerden ilki gördüğünüz üzere Diger.Ad şeklindedir.
Yani benim elimde Diger isimli bir sınıf var ve bu sınıf içinden String tipinde olan Ad değişkenine ulaşıyorum. Fakat başka sınıftan ulaşmaya gerek var mı diye sorabilirsiniz. Hayır gerek yok burada amaç başka sınıftaki değişkenlere nasıl ulaşabiliriz ve intent ile nasıl bu değişkeni köprü gibi kullanıp veri transferi yapabiliriz bunu göstermekti. Bunun yerine direk bir tane String tipi tanımlayıp onu da aktarabiliriz. İkinci parametre ise editText’ten girmiş olduğum text değeridir. Bunu şu şekilde belirtiyoruz.adGiris.getText().toString().
Bu satırdaki getText() metodu bizim editText ile girilen verinin değerini Diger.Ad değişkeninin değerine atmamızı sağlıyor. Daha sonra intent.setClass(getApplicationContext(),DigerSinif.class) kod satırıyla ise hangi sınıftan hangi sınıfa geçileceğini belirtiyoruz. Daha önceki yazımızda getApplicationContext() yerine MainActivity.this kullanabileceğimizide belirtmiştik herhangi bir sorun olmadan sorunsuz bir şekilde çalışacaktır.
En son adım ise startActivity(intent)adımıdır. Bu kod satırıyla birlikte Intent ile sayfa geçisini ve veri transferi olayımızı başlatmış oluyoruz.
MainActivity.java sınıfımızın içeriğini kodladıktan sonra sıra veriyi transfer edeceğimiz sınıfımız kodlayacağız.
Bunun için ben DigerSinif.java isimle bir sınıf yarattım ve bu sınıfta kullanacağım XML içinde activity.xml file yarattım. activity.xml içeriğini şu şekilde düzenliyoruz.
Görüldüğü gibi sadece içinde ad yazan bir yazı var. Aslında hemen o yazının yanında bir tane daha textView var fakat içeriğini boş olarak girdik. Böyle yapmamızın sebebi bizim ilk sınıftan gelen verimizi bu boş bırakılan yere yazacağımızdan dolayı olamasıdır. O yüzden iki tane textView’imiz var birinde “ad” yazıyor diğeri ise boş durumda. Bu xml file’ın bağlı olduğu sınıfımıza yani DigerSinif.java sınıfımıza bakacak olursak şu kodları görürüz.
Bu satırda sadece bir tane TextView tanımlamamız vardır. Bu tanımlanan textView içine gelen verimizi eklemek için şu kod satırı yazılmıştır.gelenAd.setText(getIntent().getExtras().getString(Diger.Ad)) Bu satırla beraber gelen verimiz artık gelenAd isimli değişkenimizde saklanacaktır.
Yazımızı bitirmeden önce yapmamız gerekn ufak ama çok önemli bir iş daha kaldı. Bu da Manifest içini ayarlamaktır.EĞer manifest içini ayarlamazsak kodumuz butona bastığımız an durduruldu hatası alacaktır.Manifest içi görüntümüze eklenecek kod satırımız kırmızı daire ile gösterilmiştir.