I started learning to develop Android applications in Kotlin 2 weeks ago. I'm currently trying to make some changes to my tip calculator application, and trying to display the text field input into a totalCost TextView (where you see the "Cost of Service" text below the "Tip Amount: $20.00"), but I've no idea how to go about doing that.
Click here to see the app layout
And here's the code:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" tools:context=".MainActivity"> <ImageView android:id="@+id/icon_cost_of_service" android:layout_width="wrap_content" android:layout_height="wrap_content" android:importantForAccessibility="no" app:srcCompat="@drawable/ic_store" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/cost_of_service" app:layout_constraintBottom_toBottomOf="@id/cost_of_service"/> <com.google.android.material.textfield.TextInputLayout android:id="@+id/cost_of_service" android:layout_width="160dp" android:layout_height="wrap_content" android:hint="@string/cost_of_service" android:layout_marginStart="16dp" app:layout_constraintStart_toEndOf="@id/icon_cost_of_service" app:layout_constraintTop_toTopOf="parent" > <com.google.android.material.textfield.TextInputEditText android:id="@+id/cost_of_service_edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="numberDecimal"/> </com.google.android.material.textfield.TextInputLayout> <ImageView android:id="@+id/icon_service_question" android:layout_width="wrap_content" android:layout_height="wrap_content" android:importantForAccessibility="no" app:srcCompat="@drawable/ic_service" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/service_question" app:layout_constraintBottom_toBottomOf="@id/service_question"/> <TextView android:id="@+id/service_question" style="@style/Widget.TipTime.TextView" android:layout_marginTop="16dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/how_was_the_service" app:layout_constraintStart_toStartOf="@id/cost_of_service" app:layout_constraintTop_toBottomOf="@id/cost_of_service" /> <RadioGroup android:id="@+id/tip_options" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checkedButton="@id/option_twenty_percent" android:orientation="vertical" app:layout_constraintStart_toStartOf="@id/service_question" app:layout_constraintTop_toBottomOf="@id/service_question"> <RadioButton android:id="@+id/option_twenty_percent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/amazing_service" /> <RadioButton android:id="@+id/option_eighteen_percent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/good_service" /> <RadioButton android:id="@+id/option_fifteen_percent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ok_service" /> </RadioGroup> <ImageView android:id="@+id/icon_round_up" android:layout_width="wrap_content" android:layout_height="wrap_content" android:importantForAccessibility="no" app:srcCompat="@drawable/ic_round_up" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/round_up_switch" app:layout_constraintBottom_toBottomOf="@id/round_up_switch"/> <com.google.android.material.switchmaterial.SwitchMaterial android:id="@+id/round_up_switch" android:layout_width="0dp" android:layout_height="wrap_content" android:checked="true" android:text="@string/round_up_tip" app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="16dp" app:layout_constraintStart_toEndOf="@id/icon_round_up" app:layout_constraintTop_toBottomOf="@id/tip_options" /> <Button android:id="@+id/calculate_button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/calculate" android:layout_marginTop="8dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@id/round_up_switch" app:layout_constraintTop_toBottomOf="@id/round_up_switch" /> <TextView android:id="@+id/tip_result" style="@style/Widget.TipTime.TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/calculate_button" tools:text="Tip Amount: $10" /> </androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
package com.example.tiptime import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.example.tiptime.databinding.ActivityMainBinding import java.text.NumberFormat class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.calculateButton.setOnClickListener { calculateTip() } } fun calculateTip() { val stringInTextField = binding.costOfServiceEditText.text.toString() val cost = stringInTextField.toDoubleOrNull() if (cost == null) { binding.tipResult.text = "" return } val tipPercentage = when (binding.tipOptions.checkedRadioButtonId) { R.id.option_twenty_percent -> 0.20 R.id.option_eighteen_percent -> 0.18 else -> 0.15 } var tip = tipPercentage * cost if (binding.roundUpSwitch.isChecked) { tip = kotlin.math.ceil(tip) } val formattedTip = NumberFormat.getCurrencyInstance().format(tip) binding.tipResult.text = getString(R.string.tip_amount, formattedTip) } }
Thank you.
https://stackoverflow.com/questions/66913311/q-kotlin-for-android-developement-text-field-to-textview April 02, 2021 at 09:07AM
没有评论:
发表评论