Merhaba bu yazıda Android programlamada sık sık karşılaşacağımız Activity ve Intent kavramlarını açıklayacağız ve örneklerle daha anlaşılır hale gelmesini sağlayacağız.
– Activity Nedir?
– Intent Nedir?
– Yeni Bir Aktivite Oluşturmak
– İki Aktivite Arasında Intent İle Geçiş Sağlamak
bu soruların cevaplarına bakalım:
Activity Nedir?
Kısaca bir uygulamada kullanıcı ile etkileşimde bulunan sayfa diyebiliriz. Her uygulama mutlaka bir ana activity bulundurmak zorundadır. Activityler life-cycle a sahiptirler. İleride profesyonel uygulamalar geliştirebilmek adına yaşam döngüsünü iyi kavramak gerekmektedir. İlk olarak çalışacak metot onCreate() metodudur. Yaşam döngüsünü aşağıdaki grafik ile daha iyi anlayalım:
Örnek olarak hepimizin tanıdığı “MainActivity” verilebilir. Activityler, AndroidManifest.xml dosyası içerisinde tanımlanmazsa uygulamamız çökecektir. Arayüz ile eklenen activityler otomatik olarak AndroidManifest dosyasında tanımlanmaktadır. Genellikle uygulamalar birden fazla activity barındırır. Intent aracılığı ile activityler arası geçişi gerçekleyeceğiz.
Buradaki görselde MAIN ve LAUNCHER kelimelerine dikkatlice inceleyin 🙂
Intent Nedir?
Activityler arası iletişim Intent sayesinde gerçekleştirilir. Birbirleri arasında bilgi aktarımını sağlar. Intent oluşturmak için:
Intent intentinAdi = new Intent(this, ActivityAdi.class);
yazmamız yeterlidir. Intent sınıfını import etmeyi unutmayalım. Kısa yol olarak Alt+Enter veya el ile
import android.content.Intent;
yazarak ilgili sınıfı projenize dahil edebilirsiniz.
Aşağıdaki metodlar ile activitylerin yaşam döngüsü (life-cycle) kontrol edilmektedir. Profesyonel bir uygulama geliştirebilmek için bu metodları doğru bir şekilde kullanıyor olmamız çok önemlidir.
onCreate: Activity başlatıldığında ilk çağırılan metoddur.
onStart: onCreate metodu çalıştırıldıktan sonra, görsel ögeler (tasarım) oluştuğunda çağırılan metoddur.
onResume: Eğer activity durdurulduysa, onResume ile tekrar aktif hale getirilir.
onPause: Activity arka plana atıldığında çalışır (cihazın back tuşuna basılması vs.)
onStop: onPause gibi activity arka plana atıldığında çalışır. onStop için iki durumdan bahsedebiliriz. Bunlar kullanıcının veya uygulamanın tekrar aynı activitye dönmesi veya bir daha activitye geri gelmemesidir. Activitye geri dönüldüğü taktirde onRestart -> onStart metodları çalışır, ikinci durumda ise onDestroy metodu ile yaşam döngüsü tamamlanır.
onDestroy: Yaşam döngüsünü tamamlanır. Bir activitye ait bütün kaynaklar temizlenir.
İki Activity Arası Geçiş
İkinci Aktivite Ekleme
Bir Android projesi açalım. Var olan bir proje üzerinde de çalışabilirsiniz. İlk önce birinci aktivitemize gidelim. (activity_main.xml dosyası) Ben yeni bir proje oluşturduğum için varsayılan olarak Hello World mesajı bizi karşılamakta. Hello World yazılı olan metin yerine bulunduğumuz yeri yazalım. İlk Ekran diyebiliriz. Daha sonra bir buton ekleyelim, buton üzerinde görünen metine Değiştir ismini verelim. Görünüş olarak sayfamız hazır. Butonumuza bir anlam kazandırmak adına onClick metodu ekleyelim. onClick metodumuzun ismi gecisYap olsun.
Resim 1.1 onClick Metodunun Düzenlenmesi |
Resim 1.2 Örnek Ekran |
Resim 1.3 |
Sol taraftaki sekmede yer alan Java dizinine sağ tıklayıp New -> Activity -> Empty Activity diyerek Activity Name: ikinciActivity yazıyoruz. İsimlendirmenin anlaşılır olması kod okunurluğunu artıracaktır. İkinci activitye ait .java uzantılı ve .xml uzantılı dosyalarımız oluşturuldu. Şimdi ise ikinci activity için Değiştir butonu ve karşılama yazımızı ekleyelim. onClick metodumuzun adını yine gecisYap olarak belirleyelim.
Sıra şimdi de iki activity arasında geçişi sağlamada.
Intent Oluşturalım
İlk aktivitemizin java dosyalarını düzenlediğimiz MainActivity.java dosyasına girelim. Intent oluşturmak için gerekli anahtar kelime “new” dir. Biz bu işlemleri onClick içine yazdığımız gecisYap metodu içinde gerçekleştireceğiz. Metodumuz public ve geri dönüş değeri içermeyen (void) bir metod olmalıdır.
Metot içerisinde intentimizi oluşturuyoruz:
Intent intent = new Intent(getApplicationContext(), ikinciActivity.class);
daha sonrasında ise startActivity metoduna intent nesnesini parametre olarak göndererek kodumuzu tamamlıyoruz.
startActivity(intent);
MainActivity.java dosyamızın son hali bu şekilde olacaktır.
Aynı işlemleri ikinci activity e ait java dosyasında da yapacağız. Bu sefer intent yaratırken yazdığımız ikinciActivity.class yerine geçmek istediğimiz MainActivity.class adını yazacağız. Run ederek uygulamamızın çalışmasını gözlemleyebilirsiniz 🙂