Cómo deshabilitar el button de punto en Android Kotlin

Soy nuevo en Android Studio – Kotlin, estoy construyendo una aplicación con numbers y operadores matemáticos con punto decimal (button .dot) En mi aplicación de calculadora matemática, si presiona el button de puntos, el button debe ser desactivado o no ingresado por el segundo hora. Deseo desactivar o detener la printing del button de puntos (.) Si lo presiono más de una vez.

Aquí está mi código

Archivo Acitivity.kt

package com.tripbegins.calculator import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import com.tripbegins.calculator.R.id.* import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } var emptyText = true fun numberEvents(view: View) { var checkButton:Boolean = false if(emptyText){ viewResult.setText("") } emptyText = false var button = view as Button var isClicked = viewResult.text.toString() when (button.id) { buttonOne.id -> isClicked += "1" buttonTwo.id -> isClicked += "2" buttonThree.id -> isClicked += "3" dotButton.id-> isClicked+="." } viewResult.setText(isClicked) } var operation ="+" var oldValues:String? = null fun mathOperation(view: View){ var mathButton = view as Button var isClicked = viewResult.text.toString() when(mathButton.id){ plusButton.id-> { operation = "+" } minusButton.id->{ operation="-" } mulButton.id->{ operation="*" } } oldValues = viewResult.text.toString() emptyText = true } fun Calculate(view: View){ var newValues = viewResult.text.toString() var calulateButton:Double? = null when(operation){ "+"-> { calulateButton = oldValues!!.toDouble() + newValues.toDouble() } "-"-> { calulateButton = oldValues!!.toDouble() - newValues.toDouble() } "*"-> { calulateButton = oldValues!!.toDouble() * newValues.toDouble() } } viewResult.setText(calulateButton.toString()) emptyText=true } fun clearFunction(view: View){ viewResult.setText("") } } 

file activity.xml

  <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.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" tools:context="com.tripbegins.calculator.MainActivity"> <EditText android:id="@+id/viewResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="42dp" android:ems="10" android:gravity="bottom|right" android:inputType="textPersonName" android:text="0" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/buttonTwo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="76dp" android:onClick="numberEvents" android:text="2" app:layout_constraintStart_toEndOf="@+id/buttonOne" app:layout_constraintTop_toBottomOf="@+id/viewResult" /> <Button android:id="@+id/plusButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="38dp" android:onClick="mathOperation" android:text="+" app:layout_constraintBaseline_toBaselineOf="@+id/minusButton" app:layout_constraintStart_toStartOf="parent" /> <Button android:id="@+id/minusButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="12dp" android:layout_marginTop="33dp" android:onClick="mathOperation" android:text="-" app:layout_constraintStart_toEndOf="@+id/plusButton" app:layout_constraintTop_toBottomOf="@+id/buttonTwo" /> <Button android:id="@+id/mulButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="26dp" android:onClick="mathOperation" android:text="*" app:layout_constraintBaseline_toBaselineOf="@+id/minusButton" app:layout_constraintStart_toEndOf="@+id/minusButton" /> <Button android:id="@+id/calButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="44dp" android:onClick="Calculate" android:text="Calculate" app:layout_constraintStart_toStartOf="@+id/minusButton" app:layout_constraintTop_toBottomOf="@+id/minusButton" /> <Button android:id="@+id/buttonThree" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="26dp" android:onClick="numberEvents" android:text="3" app:layout_constraintBaseline_toBaselineOf="@+id/buttonTwo" app:layout_constraintStart_toEndOf="@+id/buttonTwo" /> <Button android:id="@+id/buttonOne" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="34dp" android:onClick="numberEvents" android:text="1" app:layout_constraintBaseline_toBaselineOf="@+id/buttonTwo" app:layout_constraintStart_toStartOf="parent" /> <Button android:id="@+id/dotButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="22dp" android:onClick="numberEvents" android:text="." app:layout_constraintBaseline_toBaselineOf="@+id/calButton" app:layout_constraintEnd_toStartOf="@+id/calButton" /> <Button android:id="@+id/clearButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="11dp" android:onClick="clearFunction" android:text="Clear" app:layout_constraintBaseline_toBaselineOf="@+id/calButton" app:layout_constraintStart_toEndOf="@+id/calButton" /> </android.support.constraint.ConstraintLayout> 

Mi expectativa del resultado

Entrada válida -> 3. (No se debe ingresar el button .dot por segunda vez)

Entrada inválida -> 3 … (actualmente puedo ingresar múltiples botones .dot)

El button de puntos no debe presionarse dos veces. Debería estar activo solo una vez.

Gracias Mohammed

por lo que desea desactivar el button que tiene el nombre dotButton después de que el usuario lo haga clic por primera vez:

para deshabilitar un button, use:

 dotButton.isClickable=false 

si desea volver a hacer clic en el button (como cuando el usuario elimina el punto que ya presionó) puede usar:

 dotButton.isClickable=true 

Editar : modifique su código de actividad así:

 when (button.id) { buttonOne.id -> isClicked += "1" buttonTwo.id -> isClicked += "2" buttonThree.id -> isClicked += "3" dotButton.id-> { isClicked+="." dotButton.isClickable=false//**add this line here** } } fun clearFunction(view: View){ viewResult.setText("") dotButton.isClickable=true//**add this line here** } 
  • ¿Por qué la configuration de OnClickListener funciona una vez?
  • Cómo usar fragments con kotlin
  • La interoperabilidad Varargs Kotlin Java no funciona correctamente
  • Las classs de datos de Kotlin contienen funciones abiertas
  • Cómo usar null con kotlin @Parcelize
  • Dagger2 inyecta un presentador en un error de actividad de Kotlin
  • Convierta la actividad principal con la barra de acciones / barra de herramientas y el button de acción flotante a Anko
  • Cómo inicializar widgets en Android usando kotlin
  • La function Kotlin requiere nada, pero se define como un tipo diferente
  • Llamadas seguras en Kotlin con Array es confuso
  • No se pueden agregar las extensiones de Kotlin para Android a mi proyecto