Belajar Android : Membuat Aplikasi TwoActivitie
Hampir semua aplikasi Android punya lebih dari satu layar. Aplikasi catatan punya layar daftar dan layar tulis, aplikasi belanja punya layar katalog dan layar detail produk. Di Android, setiap layar seperti itu disebut Activity, dan berpindah dari satu Activity ke Activity lain sambil membawa data adalah keterampilan dasar yang wajib dikuasai. Di resep kali ini kita akan membuat aplikasi sederhana bernama TwoActivities: layar pertama berisi kolom teks dan sebuah tombol, lalu saat tombol ditekan, teks yang ditulis akan dikirim dan ditampilkan di layar kedua.
Tutorial ini ditulis mengikuti kondisi terkini. Kode memakai Kotlin sebagai bahasa utama karena itu bahasa resmi yang direkomendasikan Google untuk pengembangan Android. Kalau kamu lebih nyaman dengan Java, polanya persis sama, hanya sintaksnya berbeda, jadi anggap saja contoh Kotlin di bawah sebagai panduan logikanya.
Alat dan bahan
Siapkan Android Studio versi terbaru, saat artikel ini ditulis versi stabilnya adalah Quail 4 (2026.1.4), lengkap dengan Android SDK dan satu emulator (atau HP fisik untuk testing). Saat membuat project baru, atur minimum SDK ke API 26 (Android 8.0). Angka ini realistis untuk tahun ini karena sudah mencakup hampir semua perangkat aktif, dan kamu tidak perlu lagi pusing mengurus perangkat jadul seperti di zaman API 15. Target SDK biarkan mengikuti bawaan template terbaru.
Langkah 1: buat project baru
Buka Android Studio, pilih New Project, lalu pilih template Empty Views Activity. Isi nama aplikasi TwoActivities, pastikan bahasanya Kotlin, minimum SDK API 26, lalu klik Finish. Template ini otomatis membuatkan MainActivity beserta layoutnya, jadi layar pertama sudah setengah jadi.
Langkah 2: susun layout layar pertama
Buka res/layout/activity_main.xml dan ganti isinya dengan layout berikut. Kita memakai ConstraintLayout karena ini layout bawaan template modern yang fleksibel untuk mengatur posisi tiap komponen.
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp">
<TextView
android:id="@+id/teks_judul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/judul_utama"
android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/teks_petunjuk"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/petunjuk"
app:layout_constraintTop_toBottomOf="@id/teks_judul"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<EditText
android:id="@+id/edit_pesan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/hint_pesan"
android:inputType="text"
app:layout_constraintTop_toBottomOf="@id/teks_petunjuk"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<Button
android:id="@+id/tombol_kirim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/kirim"
app:layout_constraintTop_toBottomOf="@id/edit_pesan"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Susunannya sederhana: dua TextView untuk judul dan petunjuk, satu EditText tempat pengguna menulis pesan, dan satu Button di bawahnya. Perhatikan tiap komponen punya id unik, karena id inilah yang dipakai kode Kotlin untuk menemukan komponen tersebut.
Langkah 3: siapkan teks dan ukuran di resource
Praktik yang baik di Android adalah tidak menulis teks langsung di layout, melainkan menyimpannya di res/values/strings.xml agar mudah diterjemahkan dan diubah:
<string name="judul_utama">Layar Pertama</string>
<string name="petunjuk">Tulis pesan, lalu tekan tombol kirim.</string>
<string name="hint_pesan">Tulis pesan di sini</string>
<string name="kirim">Kirim</string>
<string name="judul_kedua">Layar Kedua</string>
Kalau butuh ukuran yang dipakai berulang, file res/values/dimens.xml masih tersedia di Android Studio modern untuk menyimpan nilai seperti ukuran teks atau margin.
Langkah 4: buat layout layar kedua
Klik kanan folder res/layout, pilih New, Layout Resource File, beri nama activity_second. Isi dengan tampilan yang mirip layar pertama, tapi kali ini hanya butuh satu TextView besar untuk menampilkan pesan yang dikirim:
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp">
<TextView
android:id="@+id/teks_judul_kedua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/judul_kedua"
android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/teks_terima"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="18sp"
app:layout_constraintTop_toBottomOf="@id/teks_judul_kedua"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Langkah 5: buat SecondActivity dan daftarkan di manifest
Klik kanan package aplikasi di folder java, pilih New, Kotlin Class/File, beri nama SecondActivity. Karena dibuat manual (bukan lewat wizard), Activity baru ini harus didaftarkan di AndroidManifest.xml agar dikenali sistem:
<activity
android:name=".SecondActivity"
android:exported="false" />
Tulis di dalam tag application, sejajar dengan deklarasi MainActivity yang sudah ada.
Langkah 6: kirim pesan dari MainActivity
Inilah bagian intinya. Buka MainActivity.kt dan tulis kodenya seperti ini:
package com.komporkode.twoactivities
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
companion object {
const val EXTRA_PESAN = "com.komporkode.twoactivities.PESAN"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val editPesan = findViewById<EditText>(R.id.edit_pesan)
val tombolKirim = findViewById<Button>(R.id.tombol_kirim)
tombolKirim.setOnClickListener {
val pesan = editPesan.text.toString()
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra(EXTRA_PESAN, pesan)
startActivity(intent)
}
}
}
Ada tiga hal penting di sini. Pertama, Intent adalah objek yang dipakai Android untuk meminta sesuatu ke sistem, dalam hal ini meminta membuka Activity lain secara eksplisit. Kedua, putExtra menempelkan data (teks dari EditText) ke Intent tersebut dengan sebuah kunci bernama EXTRA_PESAN. Ketiga, startActivity mengeksekusi permintaan itu sehingga layar kedua terbuka.
Bayangkan Intent seperti amplop surat: di sampulnya tertulis alamat tujuan (SecondActivity), di dalamnya ada suratnya (data pesan). Sistem Android bertugas mengantar amplop itu ke alamat yang tepat.
Langkah 7: terima pesan di SecondActivity
Sekarang buka SecondActivity.kt dan tulis kode penerimanya:
package com.komporkode.twoactivities
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val teksTerima = findViewById<TextView>(R.id.teks_terima)
val pesan = intent.getStringExtra(MainActivity.EXTRA_PESAN)
teksTerima.text = pesan
}
}
Setiap Activity punya properti intent yang berisi Intent yang membukanya. Dengan getStringExtra dan kunci yang sama persis, pesan yang dikirim dari layar pertama bisa dibaca lalu ditampilkan di TextView.
Langkah 8: jalankan dan uji
Tekan tombol Run (ikon segitiga hijau) dan pilih emulator atau HP yang terhubung. Ketik sesuatu di kolom teks, tekan tombol kirim, dan layar kedua akan terbuka menampilkan persis teks yang kamu tulis. Kalau teksnya muncul dengan benar, selamat, aplikasi TwoActivities-mu sudah jadi.
Troubleshooting: kalau aplikasinya error
Tiga masalah paling sering muncul di resep ini dan cara mengatasinya:
- Aplikasi force close saat tombol ditekan. Kemungkinan besar SecondActivity lupa didaftarkan di AndroidManifest.xml. Cek kembali langkah 5, pastikan tag activity-nya ada di dalam tag application.
- Teks tidak muncul di layar kedua. Pastikan kunci yang dipakai di putExtra dan getStringExtra persis sama. Itu sebabnya kunci disimpan sebagai konstanta EXTRA_PESAN, supaya tidak salah ketik.
- findViewById mengembalikan null. Artinya id yang dicari tidak ada di layout yang sedang dipakai. Pastikan kamu memanggil setContentView dengan layout yang benar sebelum mencari komponen, dan id di XML sama persis dengan yang ditulis di kode.
Satu tambahan kecil: pengguna bisa saja menekan tombol kirim tanpa menulis apa-apa. Kalau mau rapi, tambahkan validasi sederhana seperti if (pesan.isBlank()) return@setOnClickListener sebelum membuat Intent, supaya pesan kosong tidak ikut terkirim.
Catatan pola modern: Activity Result API
Contoh di atas memakai startActivity satu arah, dan itu masih sepenuhnya valid sampai sekarang. Tapi kalau suatu saat kamu butuh layar kedua mengembalikan data ke layar pertama (misalnya layar pilih kontak yang mengembalikan nama terpilih), cara lamanya startActivityForResult sudah ditinggalkan. Pola modernnya memakai Activity Result API: daftarkan registerForActivityResult dengan kontrak ActivityResultContracts.StartActivityForResult(), lalu di Activity tujuan panggil setResult dan finish(). Hasilnya akan mendarat di callback yang kamu daftarkan, lebih rapi dan aman terhadap lifecycle.
Penutup
Dari resep ini kamu sudah mempraktikkan fondasi navigasi Android: membuat dua Activity, menyusun layout XML dengan ConstraintLayout, mengirim data lewat Intent dan putExtra, lalu membacanya kembali dengan getStringExtra. Pola kirim terima data ini akan terus muncul di aplikasi yang lebih besar, misalnya membuka halaman detail produk sambil membawa ID produk, atau membuka halaman profil sambil membawa nama pengguna. Kuasai pola sederhananya dulu, sisanya tinggal variasi.
4 komentar