Merhaba. Android derslerine hız kesmeden devam edelim. Bu yazımda, sayfalar arası veri aktarımını sağlayan bir diğer yöntem olan Bundle kullanımını anlatacağım.
Projeyi oluşturduğunuzu varsayarak doğrudan ilk sayfamızın görüntüsünü vererek başlayalım. Uygulamamızın giriş sayfasını aşağıdaki gibi yapın.
Sarı ünlem hatalarını, sizin hallettiğinizi varsayıyorum yine. Bunları strings.xml sayfasından düzeltebiliyordunuz hatırlarsanız. Şimdi uygulamamızda yeni bir sayfa oluşturalım ve onun görüntüsünü de şu şekilde yapalım.
Bu uygulamamızın 2.sayfası. LargeText kısmına, ilk sayfada girilen değeri yazacak. Tabi bu veri aktarmayı Bundle ile yapacağız. Şimdi AndroidManifest dosyamızın görüntüsüne bakalım. Eklediğimiz bu 2.sayfa için bir activity tagı eklememiz gerekiyor. Onu da şu şekilde yaptım. Sadece 2 satır kod ekledim.
Bakın burada sonraki <activity> etiketini ekledik. Şimdi görsel kısım bittikten sonra kodlamaya geçelim. İlk olarak MainActivity sınıfımızda yani anasayfamıza ait olan sınıfta kodlamalar yapalım.
Şimdi buradaki numaralı alanları anlatalım.
1 numaralı alanda Bundle, Buton ve Edittext‘ten birer nesne oluşturduk.
2 numaralı alanda bunları id’leri ile bağladık (Bundle hariç). Bundle için id bulunmuyor.
3 numaralı alanda bir Intent nesnesi oluşturduk. Parametre olarak ilkini sabit bir değer, diğerini ise hangi sayfanın sınıfı açılacak onu yazdık.
4 numaralı alanda, butona tıklandığında bir Listener oluşturduk.
5 numaralı alanda, butonun tıklanma olayını yazdık. Buraya tıklandığında olacaklar yazıldı.
6 numaralı alanda, edittext içerisine yazılan değer bir String değişkene atandı. Bunun için gettext() metodu kullanılır.
7 numaralı alanda Bundle’dan oluşturduğumuz bnd nesnesi üzerinden putString() metodunu çağırdık. İlk parametre, girilen değeri nerede tutacağımızı gösterir. Bu değeri, diğer sayfada alırken de yine bu “veri” ‘yi kullanacağız. 2.parametre ise aktarılacak değerdir.
8 numaralı alanda intent’den oluşturduğumuz i nesnesi üzerinden putExtras() metodunu çağırdık. Parametre olarak da bnd nesnesini verdik. Bu nesne bizim değerimizi taşıyacak nesnedir.
9 numaralı alanda da son olarak bir aktivite başlattık ve parametre olarak da intent nesnesini verdik.
Şimdi son olarak da oluşturduğumuz diğer sayfanın kodlarını verelim.
Burada ilk olarak bağlama yaptık. Daha sonra yine bir Bundle nesnesi oluşturduk ve buna getIntent() metodu ile alınan extraları atadık. Daha sonra bu alinan nesnesi’nin getString() metodunu çağırarak taşınan değeri String olarak aldık ve son olarak da bunu goster adlı Textview‘a aktardık.
Ekran Görüntüleri
Görüldüğü gibi butona basında diğer sayfaya bu girilen değeri taşıdı ve 2.ekranda bu değeri yazdırdı. Son olarak da uygulamamızdaki dosyaları göstermekte fayda var. Projemizin dosyaları aşağıdaki gibidir.
Bu derste, sayfalar yani aktiviteler arası veri alışverişi yapmanın 2.yöntemi olan Bundle’ı anlattım. Diğer derslerde görüşmek üzere.
Şahsen ezbere gitmeyi hiç sevmiyorum, bundle’ın ne yararı olduğunu bilmiyorsam,nerede kullanacağımı bilmiyorsam öğrenmemin hiç bir mantığı yok.
Bundle ile veri aktarımının amacı ne? Ne gibi yararları var? Sonuçta veriyi normal bir string olarak tutarakta aktarabilirdim.
Bir fragment tan diğer bir fragment a obje aktarımını nasıl yapabiliriz?
Hocam çok güzel anlatımlarınız. Bi sorum var.
Benim yapmak istediğim. Menü ve Webview classlarım var. Menü sayfamdaki butonlara tıklandığında belirdeğim siteleri WebView classımda açtırmak istiyorum. Nasıl yapabilirim. Daha doğrusu yaptım ama hata veriyor bu “Bundle” mantığını kullanarak yapabilir miyiz ?
Bundle ile classınızın yolunu verin com.example… vs gibi
Daha sonra bu string ifadeyi webview ile açın
hacı iyi güzel anlatmışsın da bunları ekran görüntüsü şeklinde paylşamna saçma olmuş. Kod olarak paylaşmalısın
Hocam kopyala yapıştır yapmaya alışmayın diye böyle yaptım. Benim de işime gelirdi resmini almayıp doğrudan buraya kodu yapıştırmak.