Зачем спрашивать нового пользователя в Google? У меня есть Google это для большей части двух часов и нашел мало, если вообще можно использовать код Kotlin при использовании радиогрупп и радиокнопок. Вот некоторый очень полный код, который показывает, как использовать оба в Kotlin. С помощью setOnCheckedChangeListener и оператора when для преобразования одной из четырех математических функций во введенные данные. И не очень элегантная проверка ошибок ввода данных. XML-код
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/tvValOne"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="32dp"
android:paddingBottom="8dp"
android:paddingRight="16dp"
android:paddingTop="8dp"
android:text="Value One"
android:textAlignment="textEnd"
android:textColor="@color/color_Black"
android:textSize="28sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tvValTwo"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="32dp"
android:paddingBottom="8dp"
android:paddingRight="16dp"
android:paddingTop="8dp"
android:text="Value Two"
android:textAlignment="viewEnd"
android:textColor="@color/color_Black"
android:textSize="28sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintStart_toStartOf="@+id/tvValOne"
app:layout_constraintTop_toBottomOf="@+id/tvValOne" />
<TextView
android:id="@+id/tvANS"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="32dp"
android:paddingBottom="8dp"
android:paddingRight="16dp"
android:paddingTop="8dp"
android:text="Answer"
android:textAlignment="textEnd"
android:textColor="@color/color_deepBlue"
android:textSize="28sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintStart_toStartOf="@+id/tvValTwo"
app:layout_constraintTop_toBottomOf="@+id/tvValTwo" />
<android.support.constraint.Guideline
android:id="@+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.3203125" />
<EditText
android:id="@+id/etValOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="32dp"
android:ems="10"
android:inputType="number|numberDecimal"
android:textColor="@color/color_Black"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/etValTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="32dp"
android:ems="10"
android:inputType="number|numberDecimal"
android:textColor="@color/color_Black"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toBottomOf="@+id/etValOne" />
<EditText
android:id="@+id/etANS"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="32dp"
android:ems="10"
android:inputType="number|numberDecimal"
android:textColor="@color/color_Black"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toBottomOf="@+id/etValTwo" />
<Button
android:id="@+id/btnLAMmultiply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="120dp"
android:onClick="onLAMmultiply"
android:padding="16dp"
android:text="Select Function"
android:textColor="@color/color_Purple"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toBottomOf="@+id/etANS" />
<Button
android:id="@+id/btnBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:layout_marginStart="32dp"
android:onClick="onBACK"
android:padding="16dp"
android:text="BACK"
android:textColor="@color/color_Purple"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tvError"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="52dp"
android:layout_marginStart="32dp"
android:text="TextView"
android:textColor="@color/color_Red"
android:textSize="30sp"
android:textStyle="bold"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline2" />
<RadioGroup
android:id="@+id/rgRadioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:orientation="vertical"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toBottomOf="@+id/btnLAMmultiply" >
<RadioButton
android:id="@+id/rbAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Value Addition"
android:textColor="@color/color_Purple"
android:textSize="30sp"
android:textStyle="bold" />
<RadioButton
android:id="@+id/rbSubtract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Value Subtraction"
android:textColor="@color/color_deepBlue"
android:textSize="30sp"
android:textStyle="bold" />
<RadioButton
android:id="@+id/rbMultiply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Value Multiplication"
android:textColor="@color/color_Red"
android:textSize="30sp"
android:textStyle="bold" />
<RadioButton
android:id="@+id/rbDivision"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Value Division"
android:textColor="@color/color_Yellow"
android:textSize="30sp"
android:textStyle="bold" />
</RadioGroup>
Теперь код активности, если вы новичок в Слушателях, ПОЖАЛУЙСТА, понимаете, что они помещены в метод onCreate, и они там сидят и просто СЛУШАЮТ, не нужно их вызывать
package com.androidstackoverflow.learnkotlin
import android.content.Context
импорт android.content.Intent
import android.support.v7.app.AppCompatActivity
импорт android.os.Bundle
импорт android.view.View
импорт android.widget.Toast
import kotlinx.android.synthetic.main.activity_page_three. *
импорт java.math.RoundingMode
импорт java.text.DecimalFormat
import android.os.CountDownTimer
импорт android.widget.RadioButton
class PageThreeActivity: AppCompatActivity () {
var MathFunction:String = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_page_three)
rgRadioGroup.setOnCheckedChangeListener( { group, checkedId ->
if (checkedId != -1) {
MathFunction = (findViewById<View>(checkedId) as RadioButton).getText().toString()
btnLAMmultiply.setText(MathFunction)
} else {
MathFunction = ""
btnLAMmultiply.setText("Math Function")
}
})
}// end onCreate
fun doFunction(view: View){
val id = rgRadioGroup.checkedRadioButtonId
when (id) {
R.id.rbAdd -> add(view)
R.id.rbSubtract -> subtract(view)
R.id.rbMultiply -> multiply(view)
R.id.rbDivision ->division(view)
else -> onLAMmultiply(view)
}
}
fun add(view: View){
val X = etValOne.text.toString()
val Y = etValTwo.text.toString()
val multB = {X:Double,Y:Double -> X.plus(Y)}
val df = DecimalFormat("0.00")
//val df = DecimalFormat("#.##")
df.roundingMode = RoundingMode.CEILING
df.format(multB(X.toDouble(),Y.toDouble()))
etANS.setText(df.format(multB(X.toDouble(),Y.toDouble())).toString())
etANS.setText(multB(X.toDouble(),Y.toDouble()).toString())
}
fun subtract(view: View){
val X = etValOne.text.toString()
val Y = etValTwo.text.toString()
val multB = {X:Double,Y:Double -> X.minus(Y)}
val df = DecimalFormat("0.00")
//val df = DecimalFormat("#.##")
df.roundingMode = RoundingMode.CEILING
df.format(multB(X.toDouble(),Y.toDouble()))
etANS.setText(df.format(multB(X.toDouble(),Y.toDouble())).toString())
etANS.setText(multB(X.toDouble(),Y.toDouble()).toString())
}
fun multiply(view: View){
val X = etValOne.text.toString()
val Y = etValTwo.text.toString()
val multB = {X:Double,Y:Double -> X.times(Y)}
val df = DecimalFormat("0.00")
//val df = DecimalFormat("#.##")
df.roundingMode = RoundingMode.CEILING
df.format(multB(X.toDouble(),Y.toDouble()))
etANS.setText(df.format(multB(X.toDouble(),Y.toDouble())).toString())
etANS.setText(multB(X.toDouble(),Y.toDouble()).toString())
}
fun division(view: View){
val X = etValOne.text.toString()
val Y = etValTwo.text.toString()
val multB = {X:Double,Y:Double -> X.div(Y)}
val df = DecimalFormat("0.00")
//val df = DecimalFormat("#.##")
df.roundingMode = RoundingMode.CEILING
df.format(multB(X.toDouble(),Y.toDouble()))
etANS.setText(df.format(multB(X.toDouble(),Y.toDouble())).toString())
etANS.setText(multB(X.toDouble(),Y.toDouble()).toString())
}
fun onLAMmultiply(view: View ){
if(etValOne.text.length == 0){
error("Enter First Value")
//toast("Enter First Value")
etValOne.requestFocus()
return@onLAMmultiply
}
if(etValTwo.text.length == 0){
error("Enter Second Value")
//toast("Enter Second Value")
etValTwo.requestFocus()
return@onLAMmultiply
}
if(rgRadioGroup.checkedRadioButtonId == -1){
error("SELECT A FUNCTION")
return@onLAMmultiply
}
doFunction(view)
}
fun Context.toast(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
fun error(msg:String){
object : CountDownTimer(4000, 1000) {
override fun onTick(millisUntilFinished: Long) {
tvError.visibility = View.VISIBLE
tvError.setText(msg)
}
override fun onFinish() {
tvError.visibility = View.INVISIBLE
tvError.setText("")
}
}.start()
}
fun onBACK(view: View){
val intent = Intent(this@PageThreeActivity,MainActivity::class.java)
startActivity(intent)
}
// Конец класса
}