Advertisement
gurumutant

CodeLab 1 - Latihan Activity dan Input Events

May 29th, 2022
1,638
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.18 KB | None | 0 0
  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
Add Comment
Please, Sign In to add comment
Advertisement