Merhaba arkadaşlar. Bu derste, intent kavramından özet olarak tekrar bahsedeceğim ve sayfalar arası veri aktarımı nasıl yapılır onu anlatacağım.
3.android dersinde, nasıl yeni sayfa ekleriz onu anlatmıştım tekrar anlatmayacağım. O yazıya gitmek için tıklayın
Bu derse intent kavramından bahsedeceğim ve intent ile sayfalar arası veri alışverişini anlatacağım. İlk olarak projemize yeni bir sayfa ekleyelim. Bu sayfa için .java uzantılı dosyamızı oluşturalım ve AndroidManifest dosyasına da eklemesini yapalım. Uygulamamızın ilk görüntüsü şu şekilde olacaktır.
activity_main.xml dosyamızın Graphical Layout kısmını yukarıdaki gibi yapıyoruz. 1 adet buton, 2 adet edittext ve 2 adet textview ekliyoruz. Şimdi bu sayfaya ait kodları yazacağız. Bunun için MainActivity.java dosyasına çift tıklayalım butona tıklandığında diğer sayfaya gitmesini sağlayalım.
İlk olarak sınıfımızın içerisinde buton, edittext ve textview için birer nesne oluşturuyoruz. Fakat gördüğünüz gibi altını çizdi ve hata verdi. Bunlara ait paketleri import etmemizi istiyor. Bunun için ctrl+shift+o tuşlarına basarak otomatik olarak bu paketleri import edebilirsiniz ya da uyarının üzerine gelip “Import” bunları sayfanıza dahil edebilirsiniz. Bu işlemleri yaptıktan sonra bu 3 kontrolümüzü, id’leri ile bağlayalım. Daha sonra butonumuz için bir listener oluşturalım. Kodumuzun son şekli aşağıdaki gibi olacaktır.
Burada 5 adet nesnemizi id’lerine bağladık ve daha sonra b nesnesi için bir listener oluşturduk. onClick() metodunun içine de butona tıklandığında olacakları yazacağız. Bu olacaklar, diğer sayfaya geçme ve girilen verileri diğer sayfaya taşımadır. Bu arada şunu da söyleyelim. Listener olayının tamamını tek tek yazmanıza gerek yok. new View. dedikten sonra ctrl+space tuşlarına bastığınızda kendisi tamamlayacaktır. Yani şunun gibi:
Burada en üsttekini seçtiğinizde otomatik olarak onClick() metodu da oluşacaktır. Bu şekilde ctrl+boşluk tuşlarını kullanarak kodlarınızı otomatik olarak tamamlatabilirsiniz. Buna intellisense özelliği denir. Şimdi diğer sayfaya geçmek için ve formda doldurulan verilerin aktarılması için yazmamız gereken kodları gösterelim.
onClick() metodu içindeki kodları açıklayalım(Butona tıklanınca). İlk satırda bir intent oluşturduk. Bu intent nesnesi üzerinden diğer sayfaya geçeceğiz. Bunu 3.android dersimizde anlatmıştık. 2.satırda ise i nesnesi üzerinden putExtra() metodunu çağırdık. Yani bu nesneye extra bilgiler yükleyeceğiz. Peki hangi bilgiyi ve hangi ad ile yükleyeceğiz. İlk parametreye, verileri hangi değişken üzerinde taşıyacağımız yazdık. Diğer parametreye ise hangi veriyi taşıyacağımızı yazdık. Biz edittext’ler içerisine yazılan veriyi getText() metodu ile aldık. Buradaki ilk parametre için şunu söyleyelim. src klasörü altında Degiskenler adında bir sınıf oluşturduk ve verilerimizi taşıyacak olan değişkenleri burada tanımladık. Bunu sınıf olarak tanımladık çünkü her iki ekranda da bu değişkenlerin tanınabilmesi gerekiyor. Ekran görüntüsünü aşağıda verelim.
Daha sonra setClass() metodunu kullanarak, hangi sayfanın açılacağını yani verilerin hangi ekrana taşınacağını belirledik. Burada sayfa olarak activity2.class‘ı gösterdik. Son olarak startActivity() ile de yeni bir aktiviteyi başlattık, parametre olarak da bu i nesnesini gönderdik. i nesnesi içerisinde 2 bilgi var. Bunları diğer sayfada kullanacağız.
Diğer Sayfa
Burada aslında 4 adet textview var fakat 2 tanesinin text özelliğini ilk aşamada boş ayarladık çünkü buralara, ilk sayfadan gelen verileri yazacağız. Şimdi bu sayfa için kod kısmına bakalım.
Burada 4 adet textview nesnesi oluşturduk fakat son ilk ikisi ile işlem yapmayacağız. Yani onlar, ekranda görünen textview’lar. Bu görünmeyen yani text özelliği ” ” (boş) atanmış textview’ların setText() metoduna parametre olarak verileri taşıyan değişkenleri verdik. Tabi bunları aşağıdaki metod ile kullanmamız gerekiyor.
1 |
getIntent().getExtras().getString(); |
Eğer alacağımız değer int ise, getInt() dememiz gerekir. İlk sayfayı doldurup butona tıkladığımızda diğer sayfaya geçecek ve ilk sayfada yazdıklarımızı gösterecektir.
Hocam, Allah sizden razı olsun. 10 numara anlatmışsınız. Umarım devamı gelir derslerin.
hocam ben bu sekilde yeni bir aktiviti ekranında geçerken sürekli hata alıyorum
startActivity(new Intent("com.trk.andoriddeneme1.Ekran3Activity"));
yerine baska bi yerden gördügüm kadarıyla
Intent i3=new Intent(MainActivity.this,Ekran3Activity.class);
startActivity(i3);
bu sekil kullanıyorum fakat her yerde sizin gösterdiğiniz gibi yeni aktivity açılıyor ben niye yapamadım acaba:)?
Manifes dosyasında hata olabilir.Siz buradan öğrendiğiniz gibi yapın şimdilik
<action android:name manifest dosyasında nerden yazacagız bulamadım 3. dersinizdede ora açıklanmıyor tam olarak yada ben anlamadım bende yeni sayfaya geçerken hep hata alıyorum hocam program durduruluyor sizce neden?
O resimdeki manifest dosyasına bir de sizdeki default manifest dosyasına bakın ve nerede farklı bir satır var görün. Ona göre nereyi ekleyeceğinizi anlarsınız
Teşekkür ederim hocam
Merhaba , programda ikinci aktiviteye geçiyor ancak edittextlerden yazı gelmiyor .problem nedir acaba?TESEKKURLER
Bu şekilde size hatayı söyleyemem. Alışveriş esnasında kullandığınız key değerleri eslesmiyor olabilir. Bu kodları aynen yazdiysaniz çalışır
Küçük bir tavsiye;
Resim önizlemelerinin büyütülmesi görsellik ve işlevsellik açısından daha faydalı olacaktır.
kodlarım tamamen aynı ama uygulamada butona bastığım an ‘working stopped’ hatası alıp force close yapmak zorunda kalıyorum nasıl düzeltebilirim kodlar tamamen aynı
hocam aynı değildir mutlaka bir yerde hata vardır. butonun click olayının yapıldığı yere breakpoint koyun ve uygulamayı debug modda çalıştırın ve hata nerede öğrenin.
Degiskenlerin tanımlandığı kısımda
string ad=””; string soyad:””; yerine string ad=”ad”; ve string soyad=”soyad”
yazarsan 1 saattir uğraştığım bi hatayı düzeltmiş olacaksın.Paylaşım için teşekkürler…
Hocam süpersin. Çıldıracaktım