Merhaba arkadaşlar bu yazımda bir activity’de bulunan veriyi diğer aktivitylere taşıyıp orada kullanmayı göreceğiz.
Arkadaşlar önceki yazımda sayfalar arası geçişi anlatmıştım orada sayfalar arasında geçiş sağlamak için “intent” kavramı kullanıyorduk. Sayfalar arasında veri transferi yapmak içinde intentleri kullanacağız. Ben bunu anlatmak için bir örnek üzerinden gitmeyi düşündüm. Kullanıcının ilk sayfada girdiği yazıyı ikinci sayfada göstereceğiz.
Uygulamamızı yazarken ilk olarak yeni bir activity ekleyeceğiz. Yeni activity eklemeyi önceki yazımda anlatmıştım ancak tekrar hatırlatayım.Yeni activity oluşturmakiçin Android Studio da ekranın sol tarafında bulunan dosyalardan “java” klasörüne faremizle sağ tık yapıp sırasıyla “new/activity” seçeneklerini seçip ardından kullanmak istediğimiz “Activity” seçiyoruz ve daha sonra yeni activitye bir isim veriyoruz.
Activity oluşturduktan sonra ilk sayfamıza bir “editText” ve bir “Buton” ekleyeceğiz. ben ekledim kodlarını aşağıda vereyim size.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="İleri" android:id="@+id/btnİleri" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_above="@+id/btnİleri" android:layout_centerHorizontal="true" android:layout_marginBottom="79dp" /> </RelativeLayout> |
Daha sonra java dosyamıza geçip buton ve editTexti java dosyamız da tanımlayıp bir isim vereceğiz.
1 2 3 4 5 6 |
Button btnİleri; EditText yazi; btnİleri=(Button)findViewById(R.id.btnİleri); yazi=(EditText)findViewById(R.id.editText); |
Bu kod parçacıklarını daha önce görmüştük bir çok kez. Bu kodlarla buton ve editTexti tanımladıktan sonra buton için onClick(tıklanma) metodu yazacağız.
1 2 3 4 5 6 7 8 9 10 |
btnİleri.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Yapılacak İşlemler } }); |
Şimdi ise önceki yazımızda gördüğümüz yeni activity başlatmak için gerekli kodları ve veri taşımak için gerekli olan kodları yazacağız.
1 2 3 4 5 6 |
CharSequence gönderilenYazi=yazi.getText();//Yazı dizisi oluşturup kullanıcının yazdığı yazıyı buraya attık. Intent ıntent=new Intent(MainActivity.this,ikinciEkran.class);///İntent ouşturup 2. activity'e gideceğini belirledik. ıntent.putExtra("anahtar",gönderilenYazi);//Gönderilecek veriyi ve bir anahtar belirledik. startActivity(ıntent);//İntenti başlatarak yeni activityin başlamasını sağladık. |
İlk olarak CharSequence yani yazı dizisi oluşturup içerisine diğer activitye göndereceğimiz yazıyı yani kullanıcının editText’e girdiği yazıyı attık.
Daha sonra Intent oluşturup 2 parametre verdik. Parametrelerin ilki intentin çalışmaya başlayacağı sayfa yani bu sayfanın ismi, ikincisi ise yeni acılacak activitynin ismi.
Daha sonra Intent’e göndermek istediğimiz veriyi yükleyeceğiz bunun için
1 2 3 |
ıntent.putExtra(); |
Kod satırını kullanıyoruz. Bu metod bizden 2 parametre isteyecektir. İstediği ilk parametre bir şifre olacaktır. Nedir bu şifre dersek diğer activitylerden veriyi alırken bu şifreyi girerek belirleyeceğiz veriyi. İlk parametre olarak şifreyi belirledikten sonra ikinci parametre olarak göndermek istediğimiz veririn saklandığı yazı dizisinin ismini veriyoruz.
Ardından yazdığımız intent’i başlatıyoruz ve bu sayfada işimiz bitiyor. Şimdi 2. eklediğimiz activitynin xml dosyasına gidelim.Burada ekranda sadece bir textView var ve ilk sayfada yazılan yazıyı burada ekranda göstereceğiz.
Şimdi ise java dosyamıza geçip ilk sayfadan gönderdiğimiz veriyi alıp textView üzerinde gösterelim. Burada da ilk olarak textViewi java dosyamıza tanımlayıp isim vereceğiz.
1 2 3 4 |
TextView tv; tv=(TextView)findViewById(R.id.textView); |
Bu kod parçacıklarıyla textViewi java dosyamıza tanımladık. Şimdi ise veriyi alacağız.Bunun için ise yazmamız gereken kodlar;
1 2 3 4 |
Bundle gelenVeri=getIntent().getExtras(); tv.setText(gelenVeri.getCharSequence("anahtar").toString()); |
İlk sayfada hatırlarsınız intent ve putExtras kodlarını yazmıştık burada da ilk satırda onları bu sayfamızda kullanılabilir hale getiriyoruz.
İkinci satırda ise editText’e gelen yazıyı yazıyoruz bunun için ise ilk satırda oluşturduğumuz “bundle” değişkenin ismini yazıp önceki sayfadaki yazı dizisini okuyacağız. Bunun için “getCharSequence()” metodunu kullanıyoruz ve bu metod’da bizden bir parametre istiyor. Bu parametre ise ilk sayfada belirlediğimiz şifre olacaktır ve bunu da String türüne çevirdikten sonra işlem bitmiş olacaktır.
a
Merhabalar. Aşağıdaki kodu yaptığımda uygulama kapanıyor. Listeye tıkladığımda tıkladığım liste elemanını diğer taraftaki liste elemanına atmasını istiyorum. Bakabilir misiniz. ?
public void onItemClick(AdapterView parent, View view, int position, long id) {
char opname = (char) tAraclar.getItemAtPosition(position);
Intent ıntent=new Intent(MainActivity.this,Main2Activity.class);///İntent ouşturup 2. activity’e gideceğini belirledik.
ıntent.putExtra(“anahtar”, opname);//Gönderilecek veriyi ve bir anahtar belirledik.
startActivity(ıntent);
}
Bundle gelenVeri=getIntent().getExtras();
String[] araclar={
“Telefon”,”Laptop”,”Bilgisayar”,”Tablet”,”Fotoğraf Makinası”,”Televizyon”,
“Buzdolabı”,”Çamaşır Makinası”,”Saat”,gelenVeri.getCharSequence(“anahtar”).toString()
};
Uygulamanızın kaynak kodlarını gönderirseniz, yardımcı olabiliriz. yazilimbilisimnet@gmail.com