Daur Hidup Activity : PART 3 | Mengirim data Antar Activity dengan PUT_EXTRA di Kotlin

Baringin
By -
0

 Pendahuluan

    Kita telah membahas pada materi sebelumnya tentang perpindahan activity yang satu ke activity yang lain di android studio. Perpindahan tersebut menggunakan jembatan yang di kenal dengan sebutan  Intent. Bagi anda yang belum membaca materinya silahkan baca kembali materi tersebut di link berikut : Memahami Intent

    Materi sebelum tidak menyinggung cara mengirim data antara activity tapi lebih di fokuskan kepada memanggil activity. Nah, dimateri ini selain memanggil activity kita juga akan mengirim data ke activity yang lain. Metode ini menggunakan library yang disebut PUT_EXTRA.

Berikut langkahnya:

1. Membuat Desain di activity_main.xml

     Buat projek baru. Nama projek terserah kepada anda. Namun Language di sini kita akan menggunakan bahasa Kotlin. Setelah projek siap di buat silahkan akses activity_main.xml. Kita akan membuat desain sederhana terlebih dahlu di file ini. Anda dapat menambahkan sebuah button ke dalam acitivity_,main.xml tersebut. Berikut penulisannya:

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

<Button
android:id="@+id/btn_Pindah"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Pindah Activity"/>

</LinearLayout>

    Perhatikan, disini kita merubah layout menjadi LinearLayout. Sedangkan pada komponen button terdapat attribut id. attibut ini berguna nantinya untuk membuat onClickListener di program kotlin. Jadi anda harus ingat nilai yang di kandung oleh attribut ini.


2. Membuat Activity Baru

    Karena di sini kita akan memindahkan nilai dari satu activity ke activity lain, tentu kita membutuhkan setidaknya 2 buah activity. Kita sudah memiliki satu activity dan sekarang kita akan membuat activity yang kedua sebagai tempat perpindahan data.

    Silahkan masuk ke root app => kotlin+java dan klik kanan pada com.emxaple.namaProjek. Pilih New => Activity = > Empty Views Activity. Kotak dialog yang muncul silahkan isi nama activity yang kedua. Secara otomatis name terisi dengan MainActivity2. Anda dapat merubah nama atau tetap membiarkannya. Di sini kita memberi name dengan TangkapActivity.



    Sekarang anda masuk ke file acitivty_tangkap.xml dan tambahkan komponen TextView untuk meletakkan data yang di pindahkan ke activity tersebut. Perhatikan code seperti berikut:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".TangkapActivity">

<TextView
android:id="@+id/tv_Ambil"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="52dp"
android:text="data_received"
android:textAlignment="center"
android:textAllCaps="true"
android:textSize="18dp"
android:padding="10dp"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

    Nah sampai di sini persiapan untuk desain kita anggap selesai terlebih dahulu. Sekarang mari kita main-main di program kotlinnya.


3. Membuat Program di MainActivity.kt

    Langkah pertama kita adalah membuat variable di kotlin terlebih dahulu. variable ini kita letakkan di bawah class. Berikut penulisannya:

class MainActivity : AppCompatActivity(){
val Nama = "Muhammad Al-Qurtubi"
val Usia = 5

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}

    Ada 2 variable yang kita defenisikan disini yaitu Nama dan Usia. Ke dua variable inilah yang akan kita kirim nantinya ke TangkapActivity.

    Selanjutnya kita buat perintah setOnclick Listener untuk tombol Button kita. Anda ingat, id dari button tadi, yaitunya "btn_pindah".  Jadi mari kita panggil id button ini terlebih dahulu. Silahkan buat code nya seperti berikut:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val btnPindah: Button = findViewById(R.id.btn_Pindah)
btnPindah.setOnClickListener(
this)
}

    Saat ini terjadi erro pada this. Ini terjadi karena tidak ada construt. Anda dapat melengkapi code berikut pada class:

class MainActivity : AppCompatActivity(), View.OnClickListener {

    Buatlah function untuk onClik. Caranya Ketikkan onClick pada class sehingga muncul library onClick. Pilih library override fun onClick(v : View) dan tekan enter. Maka function akan terbuat seperti berikut:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Nama = findViewById(R.id.et_data)
val btnPindah: Button = findViewById(R.id.btn_Pindah)
btnPindah.setOnClickListener(this)
}

override fun onClick(v: View?) {
TODO("Not yet implemented")
}


    Sekarang kita tambahkan code berikut ke dalam function onClick:

when (v.id) {
R.id.btn_Pindah -> { => btn_Pindah adalah id dari button di activity_main.xml

}
}

    Artinya jika button dengan ber id btn_pindah di click maka akan terjadilah action. Action tersebut berupa intent. Silahkan buat intent di dalamnya:

R.id.btn_Pindah -> {
val i = Intent(this@MainActivity, TangkapActivity::class.java)=>TangkapActivity adalah nama activity ke 2
}

    Jika anda jalankan program tidak akan terjadi erro. Namun data belum bisa di pindahkan ke activity ke 2. Oleh sebab itu kita tambahkan PUT_EXTRA. Berikut Penulisannya:

R.id.btn_Pindah -> {
val i = Intent(this@MainActivity, TangkapActivity::class.java) =>TangkapActivity adalah nama activity ke 2
i.putExtra(TangkapActivity.EXTRA_NAMA, Nama) => Nama adalah nama Variabel yang dibuat
i.putExtra(TangkapActivity.EXTRA_USIA, Usia) => Usia adalah nama variabel usia yang dibuat
startActivity(i)
}

    Saat ini terjadi erro pada EXTRA_NAMA dan EXTRA_USIA. Jadi kita perlu memperbaikinya. Caranya anda masuk ke file TangkapActivity.kt Ketikkan code berikut dan letakkan di bawa "clas TangkapActivity...

companion object {
const val EXTRA_USIA= "extra_usia"
const val EXTRA_NAMA = "extra_nama"
}

    Nah sekarang MainActivity.kt tidak lagi erro pada EXTRA_NAMA dan EXTRA_USIA bukan. 

    Sekarang panggil id dari komponen TextView yang ada di file activity_tangkap.xml:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tangkap)
val tvDataReceived: TextView = findViewById(R.id.tv_Ambil)

val nama = intent.getStringExtra(MainActivity2.EXTRA_NAMA)
val usia = intent.getIntExtra(MainActivity2.EXTRA_USIA, 0)

val text = "\n Nama Kamu : $nama, " +
"\n Usia Kamu : $usia"
tvDataReceived.text = text
}

    Jalankan Program anda dan amati apa yang terjadi



    Langkah di atas baru mengirim data ke activity ke dua, tapi belum mengirim data dari activity satu ke activity ke dua. Nah, sekarang kita akan mencoba menambahkan code agar kita bisa 

Penutup 

Post a Comment

0Comments

Post a Comment (0)