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 
  • ¿Cómo puedo declarar un parámetro de function que puede ser una cadena o una function en Kotlin?
  • Volver al fragment astackdo de espaldas
  • Convierte java en kotlin en pasta
  • ¿Qué detiene a HtmlUnit de cargar la página de la tienda PSN?
  • ¿Cuál es el lugar en la jerarquía de types de types anulables?
  • ¿Cómo ejecutar las testings de Spek desde la command-line?
  • ¿Usar EventBus para finalizar una actividad de la actividad base?
  • ¿Cómo verificar la class "instanceof" en kotlin?
  • Las testings de Kotlin fallan desde la línea de command con ClassNotFoundException pero funcionan desde IntelliJ
  • El complemento de Kotlin falla Android Studio
  • ¿Cómo vincular a un miembro estático de una class de Java en KDoc?