Search code examples
androidtextwatcherandroid-textwatcherandroid-ktx

how to enable button if 2 edit text is fill?


how to enable button if 2 edit text is fill use 'androidx.core:core-ktx:1.1.0'?

override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        editTextEmailOrPhone.doOnTextChanged { emailOrPhone, _, _, _ ->
            if (isValidEmailOrPhone(emailOrPhone.toString())) {
                buttonLogin.isEnabled = true
            } else {
                edtPassword.doOnTextChanged { password, _, _, _ ->
                buttonLogin.isEnabled = password.toString().length >= 8
                }
            }
        }
    }

    private fun isValidEmailOrPhone(text: String): Boolean =
        android.util.Patterns.EMAIL_ADDRESS.matcher(text).matches() || android.util.Patterns.PHONE.matcher(
            text
        ).matches()

i've try. if i fill email (button is enable) <== look good

but, if i delete email (button not disable) <== issue


Solution

  • edtPassword.doOnTextChanged { password, _, _, _ ->
        onInfoChange(password?.toString(), editTextEmailOrPhone.text?.toString())
    }
    editTextEmailOrPhone.doOnTextChanged { emailOrPhone, _, _, _ ->
        onInfoChange(edtPassword.text?.toString(), emailOrPhone?.toString())
    }
    private fun onInfoChange(password : String?, emailOrPhone : String?){
        buttonLogin.isEnabled = isValidEmailOrPhone(emailOrPhone) && password?.length ?: 0 >= 8
    }