sizlere birden fazla etkinlik (activity) kullanmayı, bunlar arasında geçiş yapmayı, veri aktarmayı ve kullanıcıya bilgi vermek için Toast nesnesini kullanmayı anlatmaya çalışacağım.
Şu ana kadar yazdığımız uygulamalarda tek bir etkinlik vardı. Artık uygulamamıza birbirinden farklı etkinlikler ekleyerek uygulamamızın işlevselliğini artırabileceğiz.
Uygulamalar büyüdükçe burada her şeyi anlatmak zorlaştığı için artık üzerinde çalıştığımız projenin son halini gönderilerin sonuna ekleyeceğim. Böylece dosyayı indirip daha detaylı inceleyebilirsiniz.
Artık işe başlayalım. EtkinlikOgreniyorum isimli bir proje oluşturarak başlayabiliriz.
Bu seferki uygulamamız bir kayıt formu örneği. Girdiğimiz bilgileri bize farklı bir etkinlikte gösterecek.
Ayrıca bu seferki uygulamamızda 2 tane etkinlik olacağı için 2 ayrı tasarım yapacağız. O yüzden de main.xml dosyasının adını değiştirmenin uygun olacağını düşündüm. Bunu aşağıda görüldüğü gibi yapabilir ya da dosya seçiliyken F2 tuşuna basabilirsiniz.
İlk etkinliğimizin tasarımını içerecek dosyaya etkinlik_bir.xml ismini verdim. Yalnız dikkat edilmesi gereken bir nokta var. EtkinlikBir.java dosyası içinde hala main.xml dosyasına ulaşılmaya çalışılıyor. Bunu aşağıda görüldüğü gibi düzeltiyoruz yoksa hata almaya devam edeceğiz.
Şimdi ilk etkinliğimiz için tasarımımızı yapalım.
Biraz karışık bir tasarım olduğu için (beni baya uğraştırdı) her şeyi burada adım adım anlatamadım. O yüzden son halinden bir görüntü ekliyorum. İlk seferde aynısını yapamayabilirsiniz, gayet doğal. Gönlünüzden geldiği gibi bir tasarım da yapabilirsiniz. ;) Hiç anlamazsanız, projenin son halini gönderinin sonundan indirip, benim hazırladığım dosyaları da kullanabilirsiniz kendi projenizde. Seçim sizin.
Bu tasarımda nerede hangi nesnenin olduğunu merak edenler için Outline penceresinden bir ekran görüntüsü ekledim aşağıya.
Şimdi ilk etkinliğin tasarımını bitirdiğimize göre gelin 2. etkinliğimizi oluşturalım.
Yeni bir etkinlik oluştururken yapmanız gerekenler temelde şöyle; etkinlik için bir java sınıfı oluşturmak, o etkinliğin tasarımı için bir xml dosyası oluşturmak ve en önemlisi bu etkinlikle ilgili bilgiyi uygulamamızın manifest dosyasına eklemek.
Bu dosyaları elle de oluşturabiliriz ama elimizdekilerden yeni birer kopya çıkarsak işimiz kolaylaşabilir.
Bunu basitçe dosyamıza sağ tıklayıp Copy diyerek, daha sonra da o dosyanın bulunduğu dizine sağ tıklayıp Paste diyerek yapabiliriz. Daha sonra yeni dosyanın ismini de değiştirmeliyiz.
Dosyalara gerekli isimleri verdikten sonra içlerini açıp önceki etkinlikle ilgili yerleri silebiliriz.
Sıra ikinci etkinliğin de tasarımını yapmakta.
İkinci etkinliğe ait java dosyasında aşağıdaki değişikliği de yapmalıyız yoksa bu etkinliği çalıştırsak bile ilk etkinliğe ait tasarım dosyası kullanılacaktır.
Şimdi AndroidManifest.xml dosyasını açıyoruz. Application görünümünde aşağıda görüldüğü gibi Add tuşuna tıklıyoruz.
Etkinlik ekleyeceğimiz için Activity'yi seçiyoruz.
Aşağıda görüldüğü gibi eklenen etkinliğin adını ve başlığını seçmemiz gerekiyor. Browse tuşuna tıklıyoruz.
Yeni etkinliğimizi seçiyoruz.
Aynı şeyi başlık için de yapıp, strings.xml dosyası içindeki app_name'i seçiyoruz. Bu etkinliğin başlığının farklı olmasını isterseniz strings.xml içine bir girdi daha ekleyip burada onu da gösterebilirsiniz. Ben aynı başlığı kullandım.
Xml görünümüne geçersek AndroidManifest.xml dosyamızın şu an ne halde olduğunu görebiliriz.
Gördüğünüz gibi etkinliğimiz buraya eklenmiş.
Burada dikkatinizi çekmek istediğim bir yer var. Gördüğünüz gibi EtkinlikBir dediğimiz etkinliğimiz de burada. Ve tanımı içinde intent-filter diye etiketlenmiş bazı tanımlamalar var. Bu tanımlamalar uygulamanın bu etkinliği kullanarak başlayacağını belirtiyor. Yani uygulama EtkinlikBir isimli etkinlikten başlayacak.
Şimdi etkinlik_bir.xml dosyasını açıp eklediğimiz düğmelerin tıklanma olaylarını belirleyelim.
Aynı şeyi etkinlik_iki.xml dosyasında da yapalım.
Etkinlikler arasında veri aktarırken verilere bazı etiketler vereceğiz. Daha sonra biz bu etiketleri değiştirmek istersek sıkıntı yaşamayalım diye bu etiketleri sabit değerler olarak ayrı bir sınıf içinde tutmak mantıklı bir çözüm. Bunun için yeni bir sınıf oluşturuyoruz.
İçine etkinlikler arasında göndereceğimiz her veri için sabit değerler tanımlayalım.
Şimdi artık kodlama zamanı.
EtkinlikBir.java ile işe başlayalım.
Kullanacağımız nesnelere ait değişkenler oluşturduk ve bunları findViewById metodu ile belirledik.
Düğmelerin tıklanma metodlarını da yazalım.
Burada gönder düğmesi bilgileri ikinci etkinliğe gönderecek. Peki bunu nasıl yapıyoruz? Şöyle.
Etkinlikler arasında geçiş yapmak için Intent türünde bir nesneye ihtiyacımız var. Yukarıdaki görüntünün 40. satırında EtkinlikIki'ye geçmemizi sağlayacak bir Intent nesnesi oluşturuyoruz.
Daha sonra 41 ve 42. satırlarda bu Intent nesnesi içine ek bilgiler ekliyoruz. Uygulamamızdaki EditText nesnelerinin içindeki yazıları okuyup, bunları daha önceden oluşturduğumuz anahtar kelimelerle birlikte Intent nesnesine ekliyoruz.
Peki neden bir anahtar kelimeye ihtiyaç duyuyoruz? Cevap aslında basit. Daha sonra bu eklediğimiz bilgilere bu kelimeler yardımıyla erişeceğiz.
EditText nesnesinden String döndüğü için 43. satırda okunan değeri int türüne dönüştürerek Intent nesnesine ekliyoruz.
Daha sonra cinsiyet kısmında hangi düğmenin seçili olduğunu kontrol edip, seçili olan cinsiyete göre Intent nesnesine String türünde veri ekliyoruz. Bir RadioButton nesnesinin seçili olup olmadığını isChecked metoduyla kolayca öğrenebiliriz. Burada getString metodu ile daha önce strings.xml dosyasında tanımladığımız bir metini çekiyoruz. Yani eğer erkek seçiliyse "Erkek" şeklinde bir String gönderilecek Intent nesnesi aracılığıyla.
Aynı şekilde yazılan ileti de eklendikten sonra startActivity metodu çağrılıyor. Parametre olarak EtkinlikIki isimli etkinliği çağırmak üzere oluşturduğumuz Intent nesnesini verdiğimiz için bu satır bize ikinci etkinliği çalıştıracak. Bu arada ilk etkinlik arka planda bekliyor olacak.
Tüm bu kodları try ve catch bloğu içine yazdık, böylece bir hata olduğunda uygulamamız sonlanmadan bize bilgi verecek. Bu bilgiyi de başta değindiğim gibi Toast nesnesi kullanarak verecek.
Toast nesnesi ile kullanıcıya ekran üzerine açılan küçük bir pencerede bilgiler verebilirsiniz.
Burada Toast sınıfına ait makeText statik metodu, bize içinde bizim strings.xml dosyasında belirlediğimiz hata iletisi yazan bir Toast nesnesi oluşturuyor. Biz de direk bu nesnenin üzerinden show metodunu çağırarak bu bilgiyi gösteriyoruz.
Şimdi EtkinlikIki.java dosyasını açıp gerekli kodları yazalım.
Burada da gerekli nesneleri oluşturup değerlerini belirliyoruz. Değerleri belirledikten sonra yapılacak iş, bu etkinlik çalıştırılırken kullanılan Intent nesnesiyle beraber gönderilmiş bilgileri çekmek.
Intent nesnesine eklenen veriler bir paket halinde geldiği için önce getIntent metodu ile bu etkinlik açılırken kullanılan Intent nesnesini, daha sonra getExtras metodu ile bütün ek verileri, daha sonra da getString metodu ile String türündeki istediğimiz veriyi elde ediyoruz.
Bu etkinlikte bize verilecek bilgi cinsiyete göre değişeceğinden ilk önce cinsiyet kontrolü yaptık. Dikkat ederseniz ilk etkinlikteki cinsiyet bilgisini Sabitler.CINSIYET etiketiyle gönderdik, burada da aynı etiketle alıyoruz.
Diğer bilgiler de çok benzer şekilde alınabiliyor. Yaş bilgisine dikkatinizi çekmek isterim. String değil de int türünde gönderdiğimiz için getString yerine getInt metodu ile bilgiye erişiyoruz.
Tüm bilgileri alıp istediğimiz bilgi metnini oluşturduktan sonra bu etkinlikteki TextView nesnesine bu bilgiyi yazdırıyoruz.
Geri düğmesinin tıklama metodu içinde o anda açık olan etkinliği bitiren finish(); ifadesi yer almakta. Bu şekilde geri düğmesine tıklanıldığında açık olan EtkinlikIki sonlanacak ve arka planda bekleyen EtkinlikBir'e geri dönülecektir.
Yukarıda strings.xml dosyasının son halini görüyorsunuz.
Haydi artık uygulamamızı çalıştıralım. :)
Uygulamamız ilk çalıştığında böyle görünüyor.
Gördüğünüz gibi, boş ya da hatalı giriş yapıldığında bize Toast ile bilgi veriliyor ve uygulamamız hata verip sonlanmıyor.
Tasarım kısmını adım adım anlatamadığım için değinemediğim bir nokta oldu. Bu formu ekrana sığmadığı zaman kaydırabilmemiz için bir ScrollView nesnesi içine yerleştirmiştim. Bunu gösterebilmek için emulatördeki cihazı yan çevirdim. Bunu yapmak için Ctrl + F12 tuşlarını kullanabilirsiniz. Gördüğünüz gibi formu kaydırabiliyorsunuz.
Şimdi ekranı eski haline getirip bilgilerimizi girelim.
Gördüğünüz gibi bilgilerimiz girdikten sonra Gönder düğmesine tıklayınca ikinci etkinliğimiz açıldı ve girdiğimiz veriler bu etkinliğe gönderilip buradaki alana yazıldı.
Burada Geri düğmesine tıkladığımızda uygulamamız bir önceki ekrana geri dönecektir.
Evet arkadaşlar, bu yazımızdaki uygulamamız bu kadar. Bu yazıda uygulamamıza nasıl yeni bir etkinlik ekleyeceğimiz, bu etkinlikler arasında nasıl geçiş yapabileceğimizi, nasıl veri aktarabileceğimiz ve Toast aracı ile kullanıcıya nasıl bilgi verebileceğimiz öğrendik. En azından öyle umuyorum. :)
Bu yazıda yaptığımız uygulamanın projesini buradan indirebilirsiniz.
İnşallah faydalı olmuştur.
Kolay gelsin, iyi çalışmalar. :)
0 yorum:
Yorum Gönder