Search code examples
javakotlintextinputandroid-textinputlayout

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>

 

 

Solution

  • 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 = ""
     }