Intent İle Sayfa Geçişi ve Data Transferi |
Android Programlama - 2
Mobil uygulama projeleri geliştirilirken genellikle tek bir sayfaya ihtiyaç duyulmaz. Yapılan projelerde sayfalar arası geçişler, sayfalar arası veri transferi gibi sayfaların birbirleriyle olan iletişimi de çoğu zaman mobil programcıların kullanım alanı olmuştur. Bu yazımızda basit bir şekilde sayfalar arası nasıl geçiş yapılır, sayfalar arası veri transferini nasıl ve ne kullanarak sağlarız gibi sorulara yanıt arayacağız.
11.12.2014 tarihli yazı 20543 kez okunmuştur.
Android ile mobil bir uygulama geliştirilirken çoğu zaman programcılar tek bir aktivitiye ihtiyaç duymazlar. Mobil uygulamalarda her bir sayfaya aktivite denilmektedir. Bu nedenle birden fazla aktiviteyle uygulamalar geliştirilmektedir. Fakat birden fazla aktiviteyle uygulama geliştirirken aktiviteler arası iletişimin ve bir aktivitedeki veriyi başka bir aktivitede kullanımın nasıl yapılacağı merak konusu olmuştur. Android programlamada basit bir şekilde sayfa geçişi Intent ya da Bundle ile sağlanır. Bu yazıda uyguladığımız projede Intent kullanılmıştır.
Projede üç adet sınıf ve iki adet xml file kullanılmıştır. İlk olarak MainActivity sınıfına bağlı olan activity_main.xml isimli dosyadan başlayalım.
Projede üç adet sınıf ve iki adet xml file kullanılmıştır. İlk olarak MainActivity sınıfına bağlı olan activity_main.xml isimli dosyadan başlayalım.
Görsel 1'de görüldüğü gibi activity_main.xml dosyasına bir adet textview, button ve edittext eklenir. Textview içeriği kullanıcının nereye girdi girmesi gerektiğini bilmesi için "Bir şey yaz ->" olarak ayarlandı. Textview'in hemen yanında ise edittext ve ekranın ortasında da buton bileşenleri yer almaktadır. activity_main.xml içeriği tamamlandıktan sonra bu xml dosyasının bağlı olduğu MainActivity sınıfının nasıl kodlandığına bakabiliriz.
Görsel 2: MainActivity.java Sınıfının Tanımlamaları
►İlginizi Çekebilir : Cep Telefonu Gerçekten Spermleri Öldürebilir mi?
MainActivity sınıfında bir adet button, textview ve edittext eklendiği için üç değişken tanımlanır. Bu değişkenler uygulamada kullanılacağı için değişkenlerin kesinlikle tanımlanması gerekmektedir. Eğer tanımlanmazsa bir önceki cümlede belirttiğimiz gibi bu değişkenler sınıf içinde kullanılmaz hale gelir. Tanımlamalar yapıldıktan sonra eklenilen butonun tıklama özelliği aktif hale getirilmiş olacaktır ve butona tıklandığında olacak olan olaylar yazılacaktır.
Uygulamadaki amaç butona tıklandığı zaman tanımlanmış olan başka bir sınıfa geçilmesi ve sayfa geçişi yaparken veri taşınmasıdır. Uygulamanın en önemli iki noktasından biri tıklama metodunun içeriğine yazılacak olan komutlardır. Bu metodun içeriğinde Intent kullanılacağı için Intent ile nesne türetildi. Sonraki adım bu üretilen nesne üzerinden veri taşımak olacaktır. Bu satır incelenirse veri taşımak için gerekli olan kod parçacığının intent.putExtra() olduğu görülmektedir. Bu metod iki parametre alır. İlk parametre Diger.Ad diğer parametre ise adGiris.getText().toString() 'dir. İlk parametre için başka bir sınıfta var olan string tipi değişkeni kullanıldı. Diger sınıfının içeriği Görsel 4'teki gibidir. Diğer parametre ise tanımlanmış olan edittext değişkenin adıdır. Kısacası bu satırla birlikte edittext ile gelen veri Diger sınıfındaki Ad değişkenine atılmış oluyor. Sonraki adımda hangi sınıftan hangi sınıfa geçileceği belirtilip Intent ile sayfa geçiş işlemi başlatılmış oluyor.
Intent ile sınıf geçişi ve veri transferi sağlandıktan sonra geçilen DigerSinif.java sınıfında gelen veriyi gösterecek bir bileşenin olması gerekmektedir. O halde DigerSinif.java sınıfına bağlı bir xml file oluşturulması gerekiyor. Bu dosya oluşturduktan sonra şu şekildedir.
İlk bakışta sadece bir tane textview var gibi gözüküyor. Aslında activity.xml dosyasının içinde iki tane textview var fakat birinin text içeriği boş bırakılmıştır. Boş bırakılmasındaki amaç gelen string tipi verinin içeriğini, boş bırakılan textview içeriğine atmaktır. activity.xml içeriği tamamlandıktan sonra DigerSinif.java içine bu xml içerisindeki bileşenlerin tanımlanması gerekir. DigerSinif.java içeriği şu şekilde tanımlanmıştır.
Görsel 6: DigerSinif.java Tanımlamalar
►İlginizi Çekebilir : Tüm Zamanların En Çok Satan 20 Cep Telefonu
Bu sınıfta gelenAd isminde bir textview tanımlanmıştır. Bu değişkenin kullanılmasındaki amaç gelen verinin içeriğini atamaktır. Atama işlemi gelenAd.setText(getIntent().getExtras().getString(Diger.ad)) kod parçacığıyla yapılmaktadır. MainActivity sınıfında adGiris isimli değişkenin değeri Diger.Ad değişkenine atılmıştı. Bu sınıfta ise Diger.Ad değişkenin değeri gelenAd değişkenine atılmaktadır. Kısacası Diger.Ad bir anlamda köprü görevi görmüş oluyor. Aslında uygulamada yapılan adGiris değişkenine girilen veriyi başka sayfada olan gelenAd değişkenine atmaktır.
Unutulmaması gereken en önemli nokta Manifest dosyasının içeriğini ayarlamaktır. Manifest dosyasının içine kullanılan tüm aktivitelerin tanımlanması gerekmektedir. Bu uygulamada iki tane aktivite kullanıldı. Fakat bu sınıflardan sadece DigerSinif.java sınıfının tanımlanması uygulamanın çalışmasını sağlayacaktır. Diger.java sınıfının tanımlanmasına gerek yoktur. Çünkü bu sınıftan sadece bir tane değişken kullanıldı ve herhangi başka bir şekilde kullanılıp uygulamada görülmesi sağlanmadı. Manifest içeriği şu şekilde oluşmuştur.
Unutulmaması gereken en önemli nokta Manifest dosyasının içeriğini ayarlamaktır. Manifest dosyasının içine kullanılan tüm aktivitelerin tanımlanması gerekmektedir. Bu uygulamada iki tane aktivite kullanıldı. Fakat bu sınıflardan sadece DigerSinif.java sınıfının tanımlanması uygulamanın çalışmasını sağlayacaktır. Diger.java sınıfının tanımlanmasına gerek yoktur. Çünkü bu sınıftan sadece bir tane değişken kullanıldı ve herhangi başka bir şekilde kullanılıp uygulamada görülmesi sağlanmadı. Manifest içeriği şu şekilde oluşmuştur.
Görsel 7: Manifest.xml İçeriği
Manifest içine sadece kırmızı daire ile belirtilmiş alan eklenir. Uygulama çalıştırıldığında herhangi bir sorun olmadan çalışacaktır.
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri
- Teknik Servis | Megger Türkiye
ANKET