munovrizall
munovrizall

Reputation: 3

How to show multiple edit text error simultaneously?

I want to validate text input, but how to show multiple edit text error simultaneously?? Here is my code

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 I Want all edit text that empty is showing error, not only one edit text

Upvotes: 0

Views: 64

Answers (1)

jayesh gurudayalani
jayesh gurudayalani

Reputation: 1691

You just need to change if .. else to if only for each condition so each condition can be checked and set error if input is not valid

replace your code with below

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
                )
            }
        }

Upvotes: 3

Related Questions