Advertisement
gurumutant

CodeLab 1 - Latihan Activity dan Input Events

May 29th, 2022
1,142
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.rplcoders.android.latihanactivity
  2.  
  3. import androidx.appcompat.app.AppCompatActivity
  4. import android.os.Bundle
  5. import android.view.View
  6. import android.widget.Button
  7. import android.widget.EditText
  8. import android.widget.TextView
  9.  
  10. class MainActivity : AppCompatActivity(), View.OnClickListener {
  11.     // pendeklarasian variabel penampung objek dari view components yang akan digunakan
  12.     private lateinit var edtWidth: EditText
  13.     private lateinit var edtHeight: EditText
  14.     private lateinit var edtLength: EditText
  15.     private lateinit var btnCalculate: Button
  16.     private lateinit var tvResult: TextView
  17.  
  18.     override fun onCreate(savedInstanceState: Bundle?) {
  19.         super.onCreate(savedInstanceState)
  20.         setContentView(R.layout.activity_main)
  21.         // pengambilan object EditText, Button, dan TextView untuk dioperasikan di codingan
  22.         edtWidth = findViewById(R.id.edt_width)
  23.         edtHeight = findViewById(R.id.edt_height)
  24.         edtLength = findViewById(R.id.edt_length)
  25.         btnCalculate = findViewById(R.id.btn_calculate)
  26.         tvResult = findViewById(R.id.tv_result)
  27.         // mengeset OnClickListener untuk tombol Hitung
  28.         btnCalculate.setOnClickListener(this)
  29.         // jika ada state yang tersimpan, ambil teks untuk tvResult dari situ
  30.         if (savedInstanceState != null) {
  31.             tvResult.text = savedInstanceState.getString(STATE_RESULT)
  32.         }
  33.     }
  34.  
  35.     override fun onClick(v: View) {
  36.         // mengecek apakah tombol yang diklik adalah Button dengan ID btn_calculate
  37.         if (v.id == R.id.btn_calculate) {
  38.             // ambil nilai dari EditText, lewatkan fungsi trim
  39.             val inputLength = edtLength.text.toString().trim()
  40.             val inputWidth = edtWidth.text.toString().trim()
  41.             val inputHeight = edtHeight.text.toString().trim()
  42.             // inisialisasi variabel pengecekan validitas inputan
  43.             var isEmptyFields = false
  44.             // pengecekan kosong tidaknya inputan
  45.             if (inputLength.isEmpty()) {
  46.                 isEmptyFields = true
  47.                 edtLength.error = "Panjang tidak boleh kosong"
  48.             }
  49.             if (inputWidth.isEmpty()) {
  50.                 isEmptyFields = true
  51.                 edtWidth.error = "Lebar tidak boleh kosong"
  52.             }
  53.             if (inputHeight.isEmpty()) {
  54.                 isEmptyFields = true
  55.                 edtHeight.error = "Tinggi tidak boleh kosong"
  56.             }
  57.             // jika inputan valid semua, baru lakukan kalkulasi dan menampilkan ke TextView
  58.             if (!isEmptyFields) {
  59.                 val volume = inputLength.toDouble() * inputWidth.toDouble() * inputHeight.toDouble()
  60.                 tvResult.text = volume.toString()
  61.             }
  62.         }
  63.     }
  64.     // pembuatan companion object untuk membantu mendeklarasikan konstanta STATE_RESULT
  65.     companion object {
  66.         private const val STATE_RESULT =  "state_result"
  67.     }
  68.     // function override untuk menyimpan state saat terjadi pemuatan ulang Activity
  69.     override fun onSaveInstanceState(outState: Bundle) {
  70.         super.onSaveInstanceState(outState)
  71.         outState.putString(STATE_RESULT, tvResult.text.toString())
  72.     }
  73. }
Advertisement
RAW Paste Data Copied
Advertisement