Anasayfa Mobil Android Programlama Ders 31: Intent Kullanarak Verileri Gönderiyoruz

Android Programlama Ders 31: Intent Kullanarak Verileri Gönderiyoruz

Android programlama öğrenmeye devam ediyoruz. Bu derste Intent’i kullanarak verileri (Data) göndermeyi öğreneceğiz.

Geçen derslerimizde Intent nedir ve nasıl kullanılır öğrendik. Action’ı kullanarak bir etkileşimden başka etkileşimi çağırıyorduk. Bu derste verileri göndermeyi öğreneceğiz. Basit bir uygulama oluşturacağız. İlk ekranda adı ve soyadı gireceğiz ve ikinci ekranda bu verileri göstereceğiz. Verileri Intent kullanarak transfer edeceğiz.

Proje Örneği:

Yeni bir proje açalım.

  • Project name: P0031_IntentExtras
  • Build Target: Android 4.2
  • Application name: IntentExtras
  • Package name: tr.example.IntentExtras
  • Create Activity: MainActivity

Main.xml dosyayı açalım ve aşağıdaki kodu kopyalayalım:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
 <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="10dp"
  android:gravity="center_horizontal"
  android:text="Input your Name">
 </TextView>
 <TableLayout
  android:id="@+id/tableLayout1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_margin="10dp"
  android:stretchColumns="1">
 <TableRow
  android:id="@+id/tableRow1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
 <TextView
  android:id="@+id/textView1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="First Name">
 </TextView>
 <EditText
  android:id="@+id/etFName"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginLeft="5dp">
 <requestFocus>
 </requestFocus>
 </EditText>
 </TableRow>
 <TableRow
  android:id="@+id/tableRow2"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
 <TextView
  android:id="@+id/textView2"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="Last Name">
 </TextView>
 <EditText
  android:id="@+id/etLName"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginLeft="5dp">
 </EditText>
 </TableRow>
 </TableLayout>
 <Button
  android:id="@+id/btnSubmit"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  android:text="Submit">
 </Button>
 </LinearLayout>

 

EdtitText kullanarak adı ve soyadı gireceğiz. Submit (Teslim etmek) butonu ikinci ekranı çağıracak ve verileri gönderecek.

MainActivity.java dosyayı açalım ve aşağıdaki kodu kopyalayalım:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener {

  EditText etFName;
  EditText etLName;

  Button btnSubmit;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        etFName = (EditText) findViewById(R.id.etFName);
        etLName = (EditText) findViewById(R.id.etLName);

        btnSubmit = (Button) findViewById(R.id.btnSubmit);
        btnSubmit.setOnClickListener(this);

    }

  @Override
  public void onClick(View v) {
    Intent intent = new Intent(this, ViewActivity.class); 
    intent.putExtra("fname", etFName.getText().toString());
    intent.putExtra("lname", etLName.getText().toString());
    startActivity(intent);
  } 
}

 

Giriş alanlarını ve butonu belirtiyoruz. İşletici olarak etkileşimi (Activity-this) kullanıyoruz. OnClick metodunu inceleyelim. Intent’i klası kullanarak oluşturuyoruz. Sistem arama yaptığı zaman bu etkileşimi (ViewActivity) klası kullanarak bulacak. ViewActivity birazdan oluşturacağız o yüzden kodumuz hata verecek. putExtra metodu nesneye iki parametre ekliyor. Birinci parametre isim ve ikincisi de değeridir. Intent’e iki nesneyi fname ve lname yerleştirdik. fname – etFName alanının değeri içeriyor ve lname – etLname alanının değeri tutuyor. startActivity kullanarak Intent’i gönderiyoruz.

ViewActivity için layout dosyayı oluşturalım. İsmi view.xml olsun:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">
<TextView
 android:id="@+id/tvView"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center_horizontal"
 android:layout_marginTop="20dp"
 android:text="TextView"
 android:textSize="20sp">
</TextView>
</LinearLayout>

 

ViewActivity.java oluşturalım:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class ViewActivity extends Activity {

  TextView tvView;

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

    tvView = (TextView) findViewById(R.id.tvView);

    Intent intent = getIntent();

    String fName = intent.getStringExtra("fname");
    String lName = intent.getStringExtra("lname");

    tvView.setText("Your name is: " + fName + " " + lName);
  }
}

 

TextView buluyoruz. getIntent metodu kullanarak Intent’i alıyoruz. Intent’ten String nesnelerini (fname,lname) çıkarıyoruz. TextView yardımıyla metinleri ekrana yazdırıyoruz. ViewActivity etkileşimini (Activity) Manifest dosyasında kayıt yapmayı unutmuyoruz.

Kaydedelim ve çalıştıralım:

Omer

Giriş alanlarını dolduruyoruz mesela FirstName Omer ve Last Name Aslan olsun.

Submit butonuna basıyoruz:

Omer Aslan

ViewActivity gözüktü, verileri Intent’ten okudu ve ekrana çıkardı. Intent’i kullanarak sadece String verileri değil başka veri tipleri de kullanabiliriz. Metotların listesinden putExtra metodunun aldığı veri tiplerini öğrenebilirsiniz.

Ders Sonu Notları:

Bu derste Intent’i kullanarak verileri nasıl göndereceğimizi öğrendik. Sonraki derste etkileşimi (Activity) kullanarak sonucu almayı öğreneceğiz.