Search code examples
androidkotlinmvvmbindingandroid-databinding

how to fix cannot find method onLoginButtonClick in binding compoment


I am stuck in finding a solution to cannot find method onLoginButtonClick or in general android data binding bugs I want to make authentication in my app by using binding and room so this is my code

register layout

android:text="@{register.emailEditTextRegisterContext}"
android:text="@{register.passwordEditTextRegisterContext}"
android:onClick="@={()-> register.onButtonLoginRegisterClick(register)}"
android:text="@{register.confirmPasswordTextContext}"
android:text="@{register.nameRegisterContext}"

login layout

android:text="@{login.emailEditTextContext}"
android:text="@{login.PasswordEditTextContext}"
android:onClick="@={() -> login.onLoginButtonClick(login)}"

registerViewModel

private val _nameRegisterContext = MutableLiveData<String>()
val NameRegisterContext: LiveData<String>
    get() = _nameRegisterContext

private val _emailEditTextRegisterContext = MutableLiveData<String>()
val emailEditTextRegisterContext: LiveData<String>
    get() = _emailEditTextRegisterContext

private val _passwordEditTextRegisterContext = MutableLiveData<String>()
val passwordEditTextRegisterContext: LiveData<String>
    get() = _passwordEditTextRegisterContext

private val _confirmPasswordTextContext = MutableLiveData<String>()
val confirmPasswordTextContext: LiveData<String>
    get() = _confirmPasswordTextContext

private val _registerCompleted = MutableLiveData<Boolean>()
val registerCompleted: LiveData<Boolean>
    get() = _registerCompleted

fun onButtonLoginRegisterClick(view: View){

}

login layout

private val _emailedittextcontext = MutableLiveData<String>()
val emailEditTextContext: LiveData<String>
    get() = _emailedittextcontext

private val _passwordedittextcontext = MutableLiveData<String>()
val PasswordEditTextContext: LiveData<String>
    get() = _passwordedittextcontext

fun onLoginButtonClick(view : View){
        onLogingin()
    }

error(whenever I tried a solution it changes)

[kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors.
****/ data binding error ****msg:cannot find method onButtonLoginRegisterClick(com.example.android.trackmysleepquality.register.RegisterViewModel) in class com.example.android.trackmysleepquality.register.RegisterViewModel
file:C:\Users\mehmet\Desktop\andfun-kotlin-sleep-tracker-with-recyclerview\app\src\main\res\layout\register_layout.xml
loc:87:32 - 87:81
****\ data binding error ****
****/ data binding error ****msg:cannot find method onLoginButtonClick(com.example.android.trackmysleepquality.login.Login_ViewModel) in class com.example.android.trackmysleepquality.login.Login_ViewModel
file:C:\Users\mehmet\Desktop\andfun-kotlin-sleep-tracker-with-recyclerview\app\src\main\res\layout\login_layout.xml
loc:76:32 - 76:68
****\ data binding error ****

please help!!


Solution

  • Although answer posted by @Miller Go Dev corrects your code somewhat, it still doesn't satisfy the needs.

    The correct way would be this,

    android:onClick="@={(view) -> login.onLoginButtonClick(view)}"
    
    android:onClick="@={(view)-> register.onButtonLoginRegisterClick(view)}"
    
        //pass the view parameter to their respective method