尽管处理了错误,空的android edittext仍会使应用程序崩溃

尽管处理了错误,空的android edittext仍会使应用程序崩溃,android,kotlin,Android,Kotlin,我正在通过单击按钮从两个edittext字段收集值。我已经实现了对所有必要条件(负数、太大的值、零)的处理,但是edittext为空的情况继续崩溃,尽管也处理了该情况 fun buildAlertDialog(message : String = "Bad input value") { val alertDialogBuilder = AlertDialog.Builder(this@MainActivity) alertDia

我正在通过单击按钮从两个edittext字段收集值。我已经实现了对所有必要条件(负数、太大的值、零)的处理,但是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")
            }
        }

funBuildAlertDialog(消息:String=“输入值不正确”)
{
val alertDialogBuilder=AlertDialog.Builder(this@MainActivity)
alertDialogBuilder.setTitle(“错误”)
alertDialogBuilder.setMessage(“$message”)
alertDialogBuilder.setNeutralButton(“关闭”){{{,{->}
val alertDialog:alertDialog=alertDialogBuilder.create()
alertDialog.show()
}
btnCalculate.setOnClickListener{
var heightInput=editTxt\u EnterHeight.text.toString().toDouble()
var weightInput=editTxt\u EnterWeight.text.toString().toInt()
if(editTxt_EnterHeight.toString().trim().isNotEmpty())
{
Toast.makeText(这个“高度不是空的”,Toast.LENGTH\u SHORT.show()
如果(高度输入>2.5)
{
buildAlertDialog(“输入值错误-太高”)
}
else if(heightInput==0.0)
{
buildAlertDialog(“输入值错误-高度值不能为零”)
}
否则如果(高度输入<0)
{
buildAlertDialog(“输入值错误-高度不能为负数”)
}
}
else if(editTxt_EnterHeight.text.toString().trim().length==0)
{
buildAlertDialog(“请输入高度值”)
}
如果(editTxt_EnterWeight.toString().trim().isNotEmpty())
{
Toast.makeText(这个“重量不是空的”,Toast.LENGTH\u SHORT.show()
如果(权重输入>350)
{
buildAlertDialog(“输入值错误-权重值太大”)
}
else if(weightInput==0)
{
buildAlertDialog(“输入值错误-权重不能为零”)
}
else if(权重输入<0)
{
buildAlertDialog(“输入值错误-权重不能为负数”)
}
}
else if(editTxt_EnterWeight.text.toString().trim().length==0)
{
buildAlertDialog(“请输入重量值”)
}
}
高度edittext inputType设置为numberDecimal,而重量edittext设置为number


我尝试过在stackoverflow和其他站点上实现多个解决方案,但所有这些解决方案都有相同的结果。(,)

兄弟你必须在将文本转换为双精度之前检查文本,而不是之后。向下移动:

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

我已经删除了这两个变量,并使用了
editTxt\u EnterHeight.text.toString().toDouble()
来获取所需的值,但同样的问题也发生了。我设法解决了它。我没有在if条件中使用
isNotEmpty
来检查edittext是否为空,而是使用以下
editTxt\u EnterWeight.text.toString().length>0
来检查相同的条件
if(editTxt_EnterWeight.text.toString().length>0){…}else{…}
我有点不明白为什么这样做,而
是空的
选项不起作用。讽刺的是,
isNotEmpty
是Android Studio/Kotlin推荐的。