2017-11-13 1 views
-1

Ich bin neu in Android Studio - Kotlin, ich baue eine App mit Zahlen und mathematische Operatoren mit Dezimalpunkt (.dot-Taste) In meiner Mathe-Rechner-App, wenn Sie die Punkt-Taste drücken, Die Schaltfläche sollte deaktiviert oder nicht zum zweiten Mal eingegeben werden. Ich möchte die Punkttaste (.) Deaktivieren oder anhalten, wenn sie mehrmals gedrückt wird.So deaktivieren Sie Punkt-Taste in Android Kotlin

Hier ist mein Code

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 Datei

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

Meine Erwartung des Ergebnisses

Valid Eintrag Datei -> 3. (.dot-Taste sollte nicht zum zweiten Mal eingegeben werden)

Ungültiger Eintrag -> 3 ... (zur Zeit kann ich mehrere .dot-Tasten eingeben)

Dot-Taste sollte nicht zweimal gedrückt werden. Es sollte nur einmal aktiv sein.

Dank Mohammed

+0

Hallo Herr, Vielen Dank für die Antwort. Können Sie mir bitte helfen, wie ich meine Codierung ändern muss, um zu überprüfen, ob die Schaltfläche angeklickt ist oder nicht. – user2468312

Antwort

0

so möchten Sie auf die Schaltfläche deaktivieren, die den Namen hat dotButton, nachdem der Benutzer es zum ersten Mal klickt:

eine Schaltfläche, die Verwendung zu deaktivieren:

dotButton.isClickable=false 

Wenn Sie möchten, dass die Schaltfläche wieder klickbar wird (z. B. wenn der Benutzer den Punkt löscht, den er bereits gedrückt hat), können Sie Folgendes verwenden:

dotButton.isClickable=true 

bearbeiten: Ihre Aktivitätscode wie das ändern:

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** 
} 
+0

PLZ Bearbeiten Sie Ihre Frage und fügen Sie den gesamten Code in Ihrer Aktivität hinzu, um Ihnen zu helfen, Ihren Code zu ändern –

+1

Hinzugefügt den ganzen Code von XML- und Kotlin-Dateien. Bitte schauen Sie in – user2468312

+0

@ user2468312 Ich bearbeite meine Antwort, überprüfen Sie, ob es funktioniert und sagen Sie mir, wenn es ein Problem gibt –

Verwandte Themen