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 
  • NoClassDefFoundError en la class Kotlin en la testing JUnit en time de ejecución
  • ¿Puedo aplicar la function infija dentro de la propia class sin `this`?
  • Kotlin Generics tipo personalizado con comodín
  • No se puede acceder a BaseColumns proporciona la propiedad _ID en Kotlin
  • Error de reference no resuelto al llamar al método add en Kotlin Set interface
  • Tengo dos methods de extensión de Kotlin para la misma class, pero con una firma genérica diferente y el comstackdor se queja
  • La secuencia de escritura de Android en el file tarda demasiado
  • Kotlin - getPendingIntent con syntax de múltiples indicadores
  • ¿Cómo puedo identificar cuándo se mapeará un tipo de Kotlin a un tipo de Java?
  • error al usar 'npm start' con la aplicación creada por 'create-react-kotlin-app'
  • kotlin jvmname ignorado por Gradle?