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()) } }