Ad

Enable Button If Checkbox Is Selected In Kotlin?

I want to enable a button if checkbox is selected or checked and disable it if unselected or unchecked. I started all my application using kotlin. if there is a way for doing somehting like that in kotlin please help! and if there is no way in kotlin, show me a way for doing that wanted I mentioned above. thanks to whome is trying to help. see this picture of my mean

here is my button and checkbox codes and :

<LinearLayout
        android:id="@+id/llIAWith"
        android:layout_width="350dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="30dp"
        android:orientation="horizontal"
        android:padding="10dp">

        <CheckBox
            android:id="@+id/cb"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/i_agree_with"
            android:textSize="15dp"
            android:textColor="@color/Middle_Gray"
            app:buttonTint="@color/Orange"
            tools:ignore="TextContrastCheck" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/terms_of_services"
            android:textSize="15dp"
            android:textColor="@color/Orange"
            tools:ignore="TextContrastCheck" />
    </LinearLayout>

    <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/btnSUp"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="30dp"
        android:background="@drawable/custom_button"
        android:text="@string/sign_up"
        android:textSize="18dp"
        android:textAllCaps="false"
        android:textColor="@color/White"
        tools:ignore="TextContrastCheck,TouchTargetSizeCheck" />

here is my kotlin codec :

class LoginActivity : AppCompatActivity() {
private lateinit var binding: ActivityLoginBinding
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityLoginBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
    initData()
}
private fun checkForInternet(context: Context): Boolean {
    val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val network = connectivityManager.activeNetwork ?: return false
    val activeNetwork = connectivityManager.getNetworkCapabilities(network) ?: return false
    return when{
        activeNetwork.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
        activeNetwork.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
        activeNetwork.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) -> true
        else -> false
    }
}
private fun initData(){
    auth = FirebaseAuth.getInstance()
    clickListener()
    clickListenerFP()
}
private fun clickListenerFP(){
    binding.llFPassword.setOnClickListener{
        startActivity(Intent(this,ForgotPasswordActivity::class.java))
        finish()
    }
}
private fun clickListener(){
    binding.llDHAAccount.setOnClickListener{
        startActivity(Intent(this,RegisterActivity::class.java))
        finish()
    }
    binding.btnSIn.setOnClickListener{
        getUserData()
    }
}
private fun getUserData(){
    val email = binding.etEmail.text.toString()
    val password = binding.etPassword.text.toString()
    if(email.isNotEmpty() && password.isNotEmpty()){
        authUser(email, password)
    }else{
        Toast.makeText(this,resources.getString(R.string.all_inputs_are_required),Toast.LENGTH_SHORT).show()
    }
}
private fun authUser(email: String, password: String){
    auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener{
            checkResult(it.isSuccessful)
        }
}
private fun checkResult(isSuccess: Boolean){
    if (checkForInternet(this)) {
        Toast.makeText(this,resources.getString(R.string.connected), Toast.LENGTH_SHORT).cancel()
    } else {
        Toast.makeText(this,resources.getString(R.string.no_network_connection), Toast.LENGTH_SHORT).show()
    }
    if(isSuccess){
        startActivity(Intent(this,DashboardActivity::class.java))
        finish()
    }else{
        Toast.makeText(this,resources.getString(R.string.authentication_failed),Toast.LENGTH_SHORT).show()
    }
}
private var backPressedTime:Long = 0
private lateinit var backToast:Toast
override fun onBackPressed() {
    backToast = Toast.makeText(this,resources.getString(R.string.press_back_again_to_leave_the_app), Toast.LENGTH_SHORT)
    if (backPressedTime + 2000 > System.currentTimeMillis()) {
        backToast.cancel()
        super.onBackPressed()
        return
    } else {
        backToast.show()
    }
    backPressedTime = System.currentTimeMillis()
}
Ad

Answer

here it is

binding.cb.setOnCheckedChangeListener { _, isChecked ->
    binding.btnSUp.isEnabled = isChecked
}
Ad
source: stackoverflow.com
Ad