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

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

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" />

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" />

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" />

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" />

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" />

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" />

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" />

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" />

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" />

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" />

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

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐