Compruebe si EditText está vacío mientras calcula los numbers

Estoy tratando de build una aplicación de calculadora de edad. Cuando no EditTexts un número en uno de los EditTexts y EditTexts clic en el Button calcular, mi aplicación se colgó. "La aplicación se ha detenido" y haz clic en la foto

Traté de establecer yearbirth.isEmpty() || yearbirth.equals("") || yearbirth == null yearbirth.isEmpty() || yearbirth.equals("") || yearbirth == null yearbirth.isEmpty() || yearbirth.equals("") || yearbirth == null , pero nada funcionó.

CÓDIGO:-

 class MainActivity : AppCompatActivity() { var yearage:Int?= null var monthage:Int?= null var dayage:Int?= null @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) buGetAge.setOnClickListener({ val year= Calendar.getInstance().get(Calendar.YEAR) val month= Calendar.getInstance().get(Calendar.MONTH) val day= Calendar.getInstance().get(Calendar.DAY_OF_MONTH) var yearage = year - Integer.parseInt(yearbirth.text.toString()) -1 val monthage:Int? val dayage:Int? if (yearbirth== null) { Toast.makeText(this, "You have to enter your year berth", Toast.LENGTH_LONG).show() } else { if (month < Integer.parseInt(monthbirth.text.toString())){ monthage=(Integer.parseInt(monthbirth.text.toString())- month- 12)* -1 }else if (month > Integer.parseInt(monthbirth.text.toString())) { yearage=year- Integer.parseInt(yearbirth.text.toString()) monthage= (Integer.parseInt(monthbirth.text.toString())- month)* -1 }else { yearage=year- Integer.parseInt(yearbirth.text.toString()) monthage=0 } if (day < Integer.parseInt(daybirth.text.toString())){ dayage= (Integer.parseInt(daybirth.text.toString())- day- 30)* -1 }else if (day > Integer.parseInt(daybirth.text.toString())){ dayage= day- Integer.parseInt(daybirth.text.toString()) }else { dayage=0 } val a= (yearage* 12)+ monthage val b= (a * 30)+ dayage val ageinyears= "$yearage years" val ageinmonths= "$a months" val ageindays= "$b days" txtshow.text = "Your age is $yearage years, $monthage months and $dayage days" txtshow2.text = "\nYOUR AGE:\nin years:\n\nin months:\n\nin days:" txtshow3.text = "\n\n$ageinyears \n\n$ageinmonths \n\n $ageindays " this.yearage=yearage this.monthage=monthage this.dayage=dayage } }) } } 

Puedes verificar si hay Input vacías como esta:

 newString = Integer.toString(yearbirth).trim(); if (newString.matches("")) { Toast.makeText(this, "EditText is empty", Toast.LENGTH_SHORT).show(); return; } 

Verifique que yearbirth.text.toString() no esté vacío antes de intentar analizarlo en un Entero (y también si es un número integer válido).

Para lograrlo, ponga la línea que mostró en su código:

 var yearage = year - Integer.parseInt(yearbirth.text.toString()) -1 

Dentro de if verifica que la input sea válida, así:

 if(yearbirth.text.toString().matches(Regex("\\d+"))) var yearage = year - Integer.parseInt(yearbirth.text.toString()) -1 
  • Spring Annotation no funciona en Kotlin
  • "Nombre de campo BSON no válido" durante la inserción
  • En la biblioteca de Injekt para Kotlin, ¿cómo inyecto funciones en lugar de solo valores?
  • Kotlin class de datos Gson problema de serialization
  • Conceptos básicos de progtwigción de Kotlin
  • Kotlin 1.1.3-2 No se puede crear una instancia de fragment en OnResume Android
  • Filtrar una subcadena en kotlin
  • Escape de palabras reservadas en una import
  • Burlarse de las interfaces con Kotlin y Mockito
  • Deshacerse de lateinit al convertir la testing Spring Java8 Junit a Kotlin
  • Android Studio 3.0 no puede sugerir import para shl y shr en Kotlin