Pertemuan 6
Nama: Thopaz Givangkara Rosadi
NRP: 5025231050
Kelas: PBB (C)
Source Code: https://github.com/rsthopaz/Pemrograman-Mobile/tree/main/Pertemuan_6
1. MainActivity
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
Kalkulatorapp()
}
}
}
Penjelasan:
class MainActivity : ComponentActivity()
Ini adalah activity utama Android.
Activity = layar aplikasi.
Saat app dibuka, Android akan menjalankan MainActivity.
override fun onCreate(...)
onCreate() dipanggil pertama kali saat activity dibuat.
Mirip "mulai aplikasi".
super.onCreate(savedInstanceState)
Memanggil fungsi bawaan Android agar activity berjalan normal.
Wajib ada.
enableEdgeToEdge()
Agar tampilan bisa sampai ke tepi layar HP.
2. Fungsi UI Compose
@Composable
fun Kalkulatorapp()
@Composable
Artinya fungsi ini membuat UI.
Compose hanya mengenali fungsi yang punya anotasi ini.
3. State Variable
var num1 by remember { mutableStateOf("") }
var num2 by remember { mutableStateOf("") }
var operator by remember { mutableStateOf("") }
var result by remember { mutableStateOf("") }
Ini bagian paling penting di Compose.
mutableStateOf
Menyimpan data yang bisa berubah.
remember
Agar nilai tidak hilang saat UI redraw.
Artinya:
num1 -> menyimpan angka pertama
4. Layout Column
Column(modifier = Modifier.padding(16.dp))
Column
Semua komponen ditumpuk vertikal:
textfield
textfield
textfield
button
hasil
padding(16.dp)
jarak dari tepi layar 16dp
5. Input Angka Pertama
OutlinedTextField(
value = num1,
onValueChange = { num1 = it },
label = { Text("Angka pertama") }
)
value = num1
textfield menampilkan isi num1
onValueChange
setiap user mengetik:
num1 = it
it = teks baru yang diketik user
label
placeholder / judul field
6. Input Operator
OutlinedTextField(
value = operator,
onValueChange = { operator = it },
label = { Text("Operator (+, -, *, /)") }
)
7. Input Angka Kedua
Sama seperti angka pertama.
8. Tombol Hitung
Button(onClick = {
Saat tombol ditekan:
jalankan semua logika hitung.
9. Konversi Input ke Angka
val n1 = num1.toDoubleOrNull()
val n2 = num2.toDoubleOrNull()
Kenapa pakai toDoubleOrNull()?
Supaya aman.
Kalau user isi:
abc
tidak crash.
Hasil:
Kalau valid:
12.0
Kalau invalid:
null
10. Validasi Input
if (n1 != null && n2 != null)
Artinya:
hanya hitung kalau dua input valid.
when operator
when (operator)
Ini seperti switch-case.
tambah
"+" -> (n1 + n2).toString()
kurang
"-" -> (n1 - n2).toString()
kali
"*" -> (n1 * n2).toString()
bagi
"/" -> if (n2 != 0.0) ...
Validasi bagi nol
if (n2 != 0.0)
Karena:
10 / 0
tidak boleh.
Jika nol:
"Tidak bisa dibagi 0"
Comments
Post a Comment