Пустой android edittext продолжает сбой приложения, несмотря на обработку ошибки - PullRequest
0 голосов
/ 19 марта 2020

Я собираю значения из двух полей edittext по нажатию кнопки. Я реализовал обработку для всех необходимых условий (отрицательные числа, слишком большое значение, ноль), но случай с пустым текстом редактирования продолжает падать, несмотря на обработку этого случая также.

fun buildAlertDialog(message : String = "Bad input value")
        {
            val alertDialogBuilder = AlertDialog.Builder(this@MainActivity)

            alertDialogBuilder.setTitle("Error")
            alertDialogBuilder.setMessage("$message")

            alertDialogBuilder.setNeutralButton("Close"){_,_ ->}

            val alertDialog : AlertDialog = alertDialogBuilder.create()
            alertDialog.show()
        }

btnCalculate.setOnClickListener{
            var heightInput = editTxt_EnterHeight.text.toString().toDouble()
            var weightInput = editTxt_EnterWeight.text.toString().toInt()

            if(editTxt_EnterHeight.toString().trim().isNotEmpty())
            {
                Toast.makeText(this, "Height is not empty", Toast.LENGTH_SHORT).show()
                if(heightInput > 2.5)
                {
                    buildAlertDialog("Bad input value - too tall")
                }
                else if(heightInput == 0.0)
                {
                    buildAlertDialog("Bad input value - height value can't be zero")
                }
                else if(heightInput < 0)
                {
                    buildAlertDialog("Bad input value - height can't be a negative number")
                }
            }
            else if(editTxt_EnterHeight.text.toString().trim().length == 0)
            {
                buildAlertDialog("Plese enter height value")
            }

            if(editTxt_EnterWeight.toString().trim().isNotEmpty())
            {
                Toast.makeText(this, "Weight is not empty", Toast.LENGTH_SHORT).show()
                if(weightInput > 350)
                {
                    buildAlertDialog("Bad input value - too big weight value")
                }
                else if(weightInput == 0)
                {
                    buildAlertDialog("Bad input value - weight can't be zero")
                }
                else if(weightInput < 0)
                {
                    buildAlertDialog("Bad input value - weight can't be a negative number")
                }
            }
            else if(editTxt_EnterWeight.text.toString().trim().length == 0)
            {
                buildAlertDialog("Please enter weight value")
            }
        }

Высота edittext inputType установить как numberDecimal, в то время как weighttext редактировать как number.

Я пытался реализовать несколько решений, которые я нашел на stackoverflow и других сайтах, но все они имели одинаковый результат. ( Проверьте, является ли EditText пустым kotlin android, https://www.tutorialspoint.com/how-to-check-if-android-edittext-is-empty, https://inducesmile.com/kotlin-source-code/how-to-check-if-edittext-is-empty-in-kotlin/)

1 Ответ

0 голосов
/ 19 марта 2020

Бро, ты должен проверить текст, прежде чем бросить его, чтобы удвоить, а не после этого. Переместите его вниз:

 var heightInput = editTxt_EnterHeight.text.toString().toDouble()
 var weightInput = editTxt_EnterWeight.text.toString().toInt()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...