ActivityForResult ile Activity’den geriye bilgi göndermek ..

Activity For Result

* Merhaba arkadaslar , yeni bir yazıda tekrar beraberiz . Yazının başlığı konusunda biraz sıkıntı yaşadığımı dile getirerek yazıya başlıyayım .

* Bugün daha önceden görmüş oldugumuz startActivity() ile bir Activity’i başlatmaya benzeyen bir durumdan söz edicem . Evet bugün ki konumuz : startActivityForResult() ile ilgili olacak . Bunlar aslında birer method isimleri .

* Hatırlayacagınız üzere bir Activity ancak 2 şekilde başlatılabilirdi . Bunlar ; startActivity()  ve startActivityForResult() ile diğer Activity’lerimize geçiş yapabiliyorduk . İkisi arasındaki fark ise adından da anlaşılacağı gibi biri Activity’i başlatır diğeri ise hem Activity’i balşatır hemde geriye bir sonuç/cevap/bilgi/veri döndürür. Evet  startActivityForResult ile başka bir Activity’e gidip orada işlemler yaptıktan sonra önceki Activity’de bu işlemlerden çıkan sonucu kullanabiliriz .

* Bugün yine örnek bir uygulama üzerinden gitmeye çalışıcaz . Kısaca senaryomuz ; Ana Layoutumuzda bulunan “Giriş yapmak için tıklayın!”  butonuna basıldıgında diğer bir Activity’e  startActivityForResult() methodu ile geçmek ve orada bilgileri alıp geriye döndüğümüzde bu bilginin dogru/yanlıs durumuna göre bir mesaj vermek olacak .

* Uygulama çıktısını yazının başında vermek istiyorum ;

 

2014-06-17 22:47:15

2014-06-17 22:49:45

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* Evet arkadaslar baslıyalım . Öncelikle iki layout tasarımlarımızın xml kodlarını verelim ;

  • activity_main.xml ;
  • person.xml ;

     

* Layout tasarımlarından sonra Java sınıflarımıza bakalım ;

* MainActivity.java dosyası ;

 

* Neler yaptıgımıza bir göz atalım ;

  • Klasik olarak nesnelerimizi tanımladıktan sonra buttonumuzu dinliyoruz .
  • Butonun tıklanma olayında standart startActivity() yerine startActivityForResult() kullanmışız .
  • Bu method da 2 parametre görülmekte . İlk parametremiz , intent nesnesi . İkinci parametremiz ise bir int degeri .
  • Bu int degerine 1 vermişiz . Siz dilediğinizi verebilirsiniz . Ama diğer sınıfımızda da bu değerin uyuşması gerekmekte .
  • Bu olay , intenlerin eşlenmesinde kullanılıyor . İlk sınıfdaki intent ile ikinci sınıftaki intent buradaki “1” değeri ile eşlenmekte .
  • Öncelikle diğer Activity’den değer alabilmek için sınıfımız içerisinde onActivityResult() methodunu override etmemiz lazım .
  • Gelen requestCode’a göre işlemleri yapıyoruz. Eğer 1 ise bizim yukarda tanımladıgımız Activity’ye karşılık gelmiş oluyor .
  • Override edilen method’da bize verilen İntent data nesnesi ile verilerimizi alıyoruz . Burada şunu atlamayalım , diğer Activity‘de de bir intent nesnesi oluşturup o intent’e veri yüklemesi yapıcaz .
  • Intent üzerinde “name” ve “pass” anahtar degerli verileri alıyoruz . Karşılaştırma yapıp gerekli işlemleri yapıyoruz .
  • Yaptıgımız işlemler ;Bilgileri ekrana basmak için TextView‘i güncellemek ve Giriş yapın butonunu ekrandan silmek .

* Şimdi de Person.java dosyamıza bakalım ;

* Person class’ımızda yaptıklarımıza göz atalım ;

  • Tekrar klasik olarak view nesnelerimizi tanımladık ve “Tamam” butonunun click olayına baktık .
  • Burada bir Intent nesnesi olusturduk arkadaslar . Dikkat ederseniz , constructor’da ne oldugu sınıf ne de gidecegi sınıf yazılı .
  • Yukarıda da dediğim gibi şimdi intent nesnemize bilgi yükliyeceğiz .
  • MainActivity sınıfımzda görmüş oldugunuz “name” ve “pass” anahtar kelimelerine karsılık olarak , EditText üzerine yazılı olan bilgileri alıyoruz ve intent’imize ekliyoruz.
  • Önemli kısım ! . Burada setResult(1,i) demişiz . Yani bir önceki sınıfımızda Activity başlatırken kullandıgımız int degeri  . Ve intent nesnemizi veriyoruz .
  • Son olarak finish() methodu ile Activity sonlanıyor ve tekrar MainActivity sınıfına dönüyor .
  • Dönünce MainActivivty’de olan onActivityResult() methodu karsılıuyor ve gerekli bilgileri alıyor .

* Yazımız sonlandı arkadaslar . Yazıda dikkat etmeniz gereken bir kaç noktayı tekrar etmek istiyorum ;

  1. Gideceğimiz Activity bize sonuç döndüreceği için startActivityForResult() kullandık .
  2. Bu methodda verilen int parametresine dikkat edilmeli . Diğer Activity’de bu degere göre intent’e yükleme yapılmalı .
  3. Diğer Activity‘lerden dönünce onActvityResult() methodunun çalıştıgı bilinmeli .

* Bu kadar yeterli sanırım

* Kaynak kodlar : ActivityForResultExample .

* Mutlu kalın , Kod’la kalın ve bol bol Çay için ..

 

* Yazımız burada sonlandı arkadaslar  .

* Bir sonraki yazıda görüşmek üzere  .

~ Alican Akkus

 

 

1036 Total Views 3 Views Today