Android Programlama | Activity'ler Arası Veri Gönderme Ve Alma

deltaturk

Katılımcı Üye
26 Kas 2020
925
1,006
Green Team Mersin Daire Bşk.


Dostlar Merhaba, Diğer konunun devamı niteliğinde olacak.
Bu konumuzda İntent’ler arası geçiş ve başka bir Activity’ye veri gönderme – alma olaylarını örnek uygulamalar ile işleyeceğiz kesinlikle öğrenilmesi gereken bir konu olacak.

Bu yapacağımız örnek basit ama önemli bir örnek, birçok yerde bu yapacağımız örneği kullanacağız.




Örnek Uygulama

Bir sayfamız olacak ve o sayfamızda Kullanıcı Adı , Şifre ve Cinsiyet bilgilerimiz olacak, uygulamada girdiğimiz bu bilgilerimizi diğer Activity’ye göndereceğiz


Tasarım Oluşturma
Bir LinearLayout oluşturacağız ardından LinearLayout içine TextView ve EditText ekleyeceğiz.
LinearLayout altına ise RadioGroup oluşturacağız.
RadioGroup’dan sonra da bir tane Button oluşturuyoruz.


XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:ignore="MissingConstraints">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="Kullanıcı Adını Giriniz : ">


</TextView>
<EditText
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:id="@+id/editTexKullanici">


</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:ignore="MissingConstraints">

<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="Şifre Giriniz : ">


</TextView>
<EditText
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:id="@+id/editTextSifre">


</EditText>
</LinearLayout>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/CinsiyetGroup"
android:orientation="horizontal">
<RadioButton
android:layout_width="0dp"
android:layout_weight="1"
android:text="Erkek"
android:id="@+id/erkek"
android:layout_height="wrap_content">


</RadioButton>
<RadioButton
android:layout_weight="1"
android:layout_width="0dp"
android:text="Kadın"
android:id="@+id/kadın"
android:layout_height="wrap_content">


</RadioButton>
</RadioGroup>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gönder "
android:id="@+id/gonderButton">


</Button>
</LinearLayout>



Activity Kısmında Tanımlama

Bu kısımda eklediğimiz tüm Arayüz elemanlarını Activity’ye tanımlıyoruz yani Button – Edit Text – Radio Button tanımlamalıyız.


Java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class MainActivity extends AppCompatActivity {

EditText kadi,ksifre;
Button btn;
RadioGroup rdgroup;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Tanimla();
}
void Tanimla()
{
kadi = (EditText) findViewById(R.id.editTexKullanici);
ksifre = (EditText) findViewById(R.id.editTextSifre);
btn = (Button) findViewById(R.id.gonderButton);
rdgroup = (RadioGroup) findViewById(R.id.CinsiyetGroup);

}
}






Tanımlama işlemi tamam dostlar, tanımla(); onCreate() içerisinde’de çağırdık



Arayüz Elemanlarından Değerleri Alma

Hangi text girilmiş hangi radio button seçilmiş bunları almamız lazım, bunları da String tipinde bir değişkene atamamız lazım dostlar.


Java:
String kullaniciAdi,kullaniciSifre,kullaniciCinsiyet;





Bunlar 2.Activity’ye göndereceğiz dostlar.

Java:
void degerAl()
{
kullaniciAdi = kadi.getText().toString();
kullaniciSifre = ksifre.getText().toString();
// Seçilen Radio Button'un id'sini bulup findNewByİd ile Text'ini alacağız
kullaniciCinsiyet = (String) ((RadioButton) findViewById(rdgroup.getCheckedRadioButtonId())).getText();
}






Bu şekilde değerleri aldık dostlar peki bu değerleri nasıl ekrana yazdıracağız derseniz Butona tıklayınca dostlar
Şimdi tekrar başka bir tane void fonksiyonu oluşturalım bunun amacı da Buton ile değerleri getirmek için olsun.
Void fonksiyonu içinde degerAl() fonsksiyonunu çağırmamız gerekecek.
Void fonksiyonumuzun adı void tıkla() olacak bu fonksiyonu’da onCreate içerisinde çağırmalıyız.






Ek olarak’da tıkla() fonksiyonunda log basalım, bakalım Log doğru gelecek mi

Java:
void tıkla()
{
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
degerAl();
Log.i("Değerler",""+kullaniciAdi+" "+kullaniciSifre+""+kullaniciCinsiyet);
}
});
}


Şimdi uygulamamızı çalıştırıp Log’ları kontrol edelim.





Resimde de gördüğünüz gibi dostlar, uygulamamız Log tutmuş

Log Çıktımız ;
2022-09-22 00:58:59.835 31955-31955/com.example.myapplication I/ Değerler : taha tht Erkek



Kodlarımızın Son Hali
Java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class MainActivity extends AppCompatActivity {

EditText kadi, ksifre;
Button btn;
RadioGroup rdgroup;

String kullaniciAdi, kullaniciSifre, kullaniciCinsiyet;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Tanimla();
tıkla();
}
void Tanimla()
{
kadi = (EditText) findViewById(R.id.editTexKullanici);
ksifre = (EditText) findViewById(R.id.editTextSifre);
btn = (Button) findViewById(R.id.gonderButton);
rdgroup = (RadioGroup) findViewById(R.id.CinsiyetGroup);

}
void degerAl()
{
kullaniciAdi = kadi.getText().toString();
kullaniciSifre = ksifre.getText().toString();
// Seçilen Radio Button'un id'sini bulup findNewByİd ile Text'ini alacağız
kullaniciCinsiyet = (String) ((RadioButton) findViewById(rdgroup.getCheckedRadioButtonId())).getText();
}
void tıkla()
{
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
degerAl();
Log.i("Değerler",""+ kullaniciAdi +" "+ kullaniciSifre +" "+ kullaniciCinsiyet);
}
} );
}
}




2.Activity

File >> New >> Activity >> Empty Activity





Şimdi MainActivity’ye geri dönüyoruz, yapmamız gereken işlem butona tıkladığımzda diğer Activity’ye dönmek olacak.

Java:
void tıkla()
{
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
degerAl();
Intent intent = new Intent(getApplicationContext(),MainActivity2.class);
intent.putExtra("kullaniciAdi",kullaniciAdi);
intent.putExtra("kullaniciSifre",kullaniciSifre);
intent.putExtra("kullaniciCinsiyet",kullaniciCinsiyet);
startActivity(intent);
}
});
}


Şimdi bakalım Buton’a tıklayınca diğer Activity’ye geçiş olacak mı.





Resimde de gördüğünüz üzere Buton’a tıklayınca yeni oluşturduğumu Activity sayfasına gittik.

Şimdi 2.Activity içerisinde bu verileri alacak kodumuzu yazalım.


Java:
public class MainActivity2 extends AppCompatActivity {

String kadi;
String ksifre;
String kcinsiyet;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);


al();
}
public void al()
{
Bundle intent = getIntent().getExtras(); //bunle kullanma amacımız activity arası data geçişi
kadi = intent.getString("kullaniciAdi");
ksifre = intent.getString("kullaniciSifre");
kcinsiyet = intent.getString("kullaniciCinsiyet");
Log.i("DEĞERLER 2 ", kadi+" "+ksifre+" "+kcinsiyet);
}
}





Kodumuzu çalıştıralım ve Log ekranımızdan inceleyelim.
Log ekranımıza değerler düştü.
2022-09-22 01:42:56.109 18822-18822/com.example.myapplication I/DEĞERLER 2: taha taha Erkek




TextView’lere Atama

2.Activity XML dosyamıza giriyoruz ve tasarımları yapıyoruz.
XML dosyamızı öncelikle LinearLayout olarak ayarlamalıyız.
Android:eek:riantation=vertical yapıyoruz ve 3 TextView oluşturuyoruz.


XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity2">

<TextView
android:layout_width="wrap_content"
android:text="Adınız : "
android:id="@+id/isim"
android:layout_height="wrap_content"></TextView>
<TextView
android:layout_width="wrap_content"
android:text="Şifreniz : "
android:id="@+id/sifre"
android:layout_height="wrap_content"></TextView>
<TextView
android:layout_width="wrap_content"
android:text="Cinsiyetiniz : "
android:id="@+id/cinsiyet"
android:layout_height="wrap_content"></TextView>

</LinearLayout>


XML Kısmında tasarımımız hazır şimdi MainActivity2.java kısmına geçiş yapıyoruz.

Java:
public class MainActivity2 extends AppCompatActivity {

String kadi;
String ksifre;
String kcinsiyet;
TextView adi,sifre,cinsiyet;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
al();
tanimla();
}
public void al()
{
Bundle intent = getIntent().getExtras(); //bunle kullanma amacımız activity arası data geçişi
kadi = intent.getString("kullaniciAdi");
ksifre = intent.getString("kullaniciSifre");
kcinsiyet = intent.getString("kullaniciCinsiyet");

adi.setText(adi.getText()+ ""+kadi);
sifre.setText(sifre.getText()+ ""+ksifre);
cinsiyet.setText(cinsiyet.getText()+ ""+kcinsiyet);

Log.i("DEĞERLER 2 ", kadi+" "+ksifre+" "+kcinsiyet);
}
public void tanimla()
{
adi = (TextView) findViewById(R.id.isim);
sifre = (TextView) findViewById(R.id.sifre);
cinsiyet = (TextView) findViewById(R.id.cinsiyet);
}
}





Kodlarımız tamam, şimdi uygulamaya giriş yapabiliriz.
Okuduğunuz İçin Teşekkür Ederim İyi Forumlar

 

'ALTAY

Katılımcı Üye
16 Ara 2021
431
824
Green tedrisatlı adamlar kendilerini belli ediyor 😄 ellerine sağlık kardeşim
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.