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** } 
  • Android Studio / Kotlin: error no válido "El método de anulación debería llamarse super"
  • Usando Anko getting type Error de falta de correspondencia requerido AnkoContext <ViewGroup> Found AnkoContext <Context>
  • Cómo agregar funcionalidad +/- a un butting en Android kotlin
  • Métodos estáticos como en la aplicación de Android con kotlin
  • En Kotlin Lenguaje de progtwigción importancia de varargs en términos de usos
  • El complemento gradle de Android se queja de un error de traducción no detectada
  • Kotlin Objetos de carga demorada
  • Diseño inflado por progtwigción con las extensiones de Kotlin para Android
  • Extensiones de Kotlin para Android y fragments retenidos
  • Dagger2 inyecta un presentador en un error de actividad de Kotlin
  • Click listener en ViewHolder solo responde a veces