Как отключить кнопку точки в android Kotlin

Я новичок в Android Studio – Kotlin, я создаю приложение с числами и математическими операторами с десятичной точкой (кнопка .dot). В приложении для математического калькулятора, если нажать кнопку точки, кнопка должна быть отключена или не введена для второго время. Я хочу отключить или остановить кнопку печати точки (.) При нажатии более одного раза.

Вот мой код

Файл 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("") } } 

Файл 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> 

Мое ожидание результата

Действительная запись -> 3. (кнопка не должна вводиться во второй раз)

Недопустимая запись -> 3 … (в настоящее время я могу ввести несколько кнопок .dot)

Кнопка Dot не должна нажиматься дважды. Он должен быть активным только один раз.

Спасибо Мохаммеду

поэтому вы хотите отключить кнопку с именем dotButton после того, как пользователь dotButton ее в первый раз:

для отключения кнопки используйте:

 dotButton.isClickable=false 

если вы хотите, чтобы кнопка снова стала кликабельной (например, когда пользователь удаляет точку, которую он уже нажал) вы можете использовать:

 dotButton.isClickable=true 

Изменить : изменить свой код активности следующим образом:

 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** } 
Intereting Posts
setOnLongClickListener в android с kotlin Пользовательский диалог Kotlin Параметр, заданный как непустой Kotlin: Как проверить, содержит ли перечисление заданную Строку, не входя в Исключения? Kotlin: Как я могу получить класс делегирования свойства члена? kotlin: некоторые проблемы с массивами в аннотациях Синтетический и пользовательский макет Kotlin в DialogFragment Почему прокрутка ViewPager перед тем, как изменить его заполнение и pagemargin, полностью подвела его? Является ли котильское структурное равенство проверкой супер типов? Android Studio Lint проверяет функции более высокого порядка Kotlin Прокрутка не работает во второй активности Просмотр не обновляется после первого запуска LiveData при использовании фоновой работы в Android Kotlin: использование статических методов google-guava в качестве расширений Как работать с foldRight () в Котлине? Доступ с использованием классов Apollo из подпакета – Kotlin Пользовательский вид не отображается в Android