How to disable dot button in android Kotlin

Viewed 10742

I am new to Android Studio - Kotlin, I am building an app with numbers and math operators with decimal point(.dot button)In my math calculator app, if press the dot button, the button should be disabled or not entered for the second time. I want to disable or stop printing dot button(.) if pressed more than once.

Here is my code

Acitivity.kt file

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 file

 <?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>

My expectation of the result

Valid entry -> 3. (.dot button should not be entered for the second time)

Invalid entry -> 3... (currently i can able to enter multiple .dot buttons)

Dot button should not pressed twice. It should be active only once.

Thanks Mohammed

1 Answers

so you want to disable the button that has the name dotButton after the user clicks it for the first time :

to disable a button, use:

dotButton.isClickable=false

if you want the button to become clickable again(like when the user deletes the dot that he already pressed) you can use:

dotButton.isClickable=true

Edit: modify your activity code like that :

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**
}
Related