kotlin 如何同时显示多个编辑文本错误?

vuktfyat  于 2023-01-26  发布在  Kotlin
关注(0)|答案(1)|浏览(119)

我想验证文本输入,但如何显示多个编辑文本错误同时??这是我的代码

binding.btnCalculate.setOnClickListener() {
            val panjang = binding.etPanjang.text
            val lebar = binding.etLebar.text
            val tinggi = binding.etTinggi.text

            if (TextUtils.isEmpty(binding.etPanjang.text)) {
                binding.etPanjang.setError("Field must be filled")
            } else if (TextUtils.isEmpty(binding.etLebar.text)) {
                binding.etLebar.setError("Field must be filled")
            } else if (TextUtils.isEmpty(binding.etLebar.text)) {
                binding.etTinggi.setError("Field must be filled")
            } else {

                val action = InputFragmentDirections.actionInputFragmentToOutputFragment(
                    panjang.toString().toInt(),
                    lebar.toString().toInt(),
                    tinggi.toString().toInt()
                )

                findNavController().navigate(
                    action
                )
            }
        }

Result我希望所有空的编辑文本都显示错误,而不仅仅是一个编辑文本

wsewodh2

wsewodh21#

您只需要将if .. else更改为if(仅针对每个条件),以便可以检查每个条件,并在输入无效时设置错误
用下面的代码替换你的代码

binding.btnCalculate.setOnClickListener() {
            val panjang = binding.etPanjang.text
            val lebar = binding.etLebar.text
            val tinggi = binding.etTinggi.text

            var isAnyError = false
            if (TextUtils.isEmpty(binding.etPanjang.text)) {
                binding.etPanjang.setError("Field must be filled")
                isAnyError = true
            }else{
                binding.etPanjang.setError(null)
            } 
            
            if (TextUtils.isEmpty(binding.etLebar.text)) {
                binding.etLebar.setError("Field must be filled")
                isAnyError = true
            }else{
                binding.etLebar.setError(null)
            } 
            
            if (TextUtils.isEmpty(binding.etLebar.text)) {
                binding.etTinggi.setError("Field must be filled")
                isAnyError = true
            }else{
                binding.etTinggi.setError(null)
            }

            if(!isAnyError){
                val action = InputFragmentDirections.actionInputFragmentToOutputFragment(
                    panjang.toString().toInt(),
                    lebar.toString().toInt(),
                    tinggi.toString().toInt()
                )

                findNavController().navigate(
                    action
                )
            }
        }

相关问题