Jorge Leonardo
Jorge Leonardo

Reputation: 163

How to put an error when my textInputLayout is empty

I am carrying out addition of decimals with textInputLayout, the problem is that at the moment of calling isEmpty () to show an error in case the fields are empty, this option does not appear.

I want to do it this way

 button.setOnClickListener {


            val numberOne = textInputLayout.editText?.text.toString().toDouble()
            val numberTwo = textInputLayout2.editText?.text.toString().toDouble()
            val reult = numberOne + numberTwo

            if (numberOne./*no appears isEmpty*/){
              textInputLayout.error = ("enter number")
            }else
                if (numberTwo./*no appears isEmpty*/){
                    textInputLayout2.error = ("enter number")
                }else {
                    textView.text = reult.toString()
                }
            
        }

xmlns

 <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/textInputLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:hint="@string/numero"
        app:layout_constraintEnd_toEndOf="parent"
        app:errorEnabled="true"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </com.google.android.material.textfield.TextInputLayout>

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/textInputLayout2"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="120dp"
        android:hint="@string/numero2"
        app:errorEnabled="true"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </com.google.android.material.textfield.TextInputLayout>

 

 

Upvotes: 1

Views: 2364

Answers (2)

Gabriele Mariotti
Gabriele Mariotti

Reputation: 363479

You can use something like:

        <com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputEditText
                android:inputType="numberDecimal"
                .../>

And you can check the value with:

val double: Double? = textInputLayout.editText?.text.toString().toDoubleOrNull()
val double2: Double? = textInputLayout2.editText?.text.toString().toDoubleOrNull()
    
if (double != null){
      //Double1 is a number
      textInputLayout.error = ""
      if (double2 != null){
         //Double2 is a number
          textInputLayout2.error = ""
          textview.text = (double+double2).toString()
       } else {
          //Double2 is not a number
          textInputLayout2.error = "Error"
           textview.text = ""
       }
 } else {
     //Double1 is not a number
     textInputLayout.error = "Error"
     textview.text = ""
 }

Upvotes: 3

Octavian Vilceanu
Octavian Vilceanu

Reputation: 31

numberOne and numberTwo are double
val numberOne = textInputLayout.editText?.text.toString().toDouble()

isEmpty() is a string function try numberOne.toString().isEmpty() and same for numberTwo

Upvotes: 0

Related Questions