package com.rplcoders.android.latihanactivity
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
class MainActivity : AppCompatActivity(), View.OnClickListener {
// pendeklarasian variabel penampung objek dari view components yang akan digunakan
private lateinit var edtWidth: EditText
private lateinit var edtHeight: EditText
private lateinit var edtLength: EditText
private lateinit var btnCalculate: Button
private lateinit var tvResult: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// pengambilan object EditText, Button, dan TextView untuk dioperasikan di codingan
edtWidth = findViewById(R.id.edt_width)
edtHeight = findViewById(R.id.edt_height)
edtLength = findViewById(R.id.edt_length)
btnCalculate = findViewById(R.id.btn_calculate)
tvResult = findViewById(R.id.tv_result)
// mengeset OnClickListener untuk tombol Hitung
btnCalculate.setOnClickListener(this)
// jika ada state yang tersimpan, ambil teks untuk tvResult dari situ
if (savedInstanceState != null) {
tvResult.text = savedInstanceState.getString(STATE_RESULT)
}
}
override fun onClick(v: View) {
// mengecek apakah tombol yang diklik adalah Button dengan ID btn_calculate
if (v.id == R.id.btn_calculate) {
// ambil nilai dari EditText, lewatkan fungsi trim
val inputLength = edtLength.text.toString().trim()
val inputWidth = edtWidth.text.toString().trim()
val inputHeight = edtHeight.text.toString().trim()
// inisialisasi variabel pengecekan validitas inputan
var isEmptyFields = false
// pengecekan kosong tidaknya inputan
if (inputLength.isEmpty()) {
isEmptyFields = true
edtLength.error = "Panjang tidak boleh kosong"
}
if (inputWidth.isEmpty()) {
isEmptyFields = true
edtWidth.error = "Lebar tidak boleh kosong"
}
if (inputHeight.isEmpty()) {
isEmptyFields = true
edtHeight.error = "Tinggi tidak boleh kosong"
}
// jika inputan valid semua, baru lakukan kalkulasi dan menampilkan ke TextView
if (!isEmptyFields) {
val volume = inputLength.toDouble() * inputWidth.toDouble() * inputHeight.toDouble()
tvResult.text = volume.toString()
}
}
}
// pembuatan companion object untuk membantu mendeklarasikan konstanta STATE_RESULT
companion object {
private const val STATE_RESULT = "state_result"
}
// function override untuk menyimpan state saat terjadi pemuatan ulang Activity
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString(STATE_RESULT, tvResult.text.toString())
}
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎