0

我收到錯誤:錯誤在數據事件移交結合安卓

****/ data binding error ****msg:Cannot find method handler on ViewDataBinding app/src/main/res/layout/activity_main.xml loc:55:27 - 55:76 ****\ data binding error **** 



<data class="ActivityMainBinding"> 
     <variable 
      name="login" 
      type="***.loginViewModel" /> 

     <variable 
      name="handler" 
      type="***.LoginHandler" /> 
    </data> 

<Button 
     android:onClick="@{() -> handler(context).onLoginButtonClicked(login)}" 
     android:id="@+id/submit_button" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="16dp" 
     android:layout_marginStart="16dp" 
     android:layout_marginTop="24dp" 
     android:text="Sign In" 
     app:layout_constraintEnd_toEndOf="@+id/user_password" 
     app:layout_constraintStart_toStartOf="@+id/user_password" 
     app:layout_constraintTop_toBottomOf="@+id/user_password"/> 

和登錄處理類:

class LoginHandler(mContext: Context) { 

    var mContext=mContext as Activity 

    fun onLoginButtonClicked(userInfo: loginViewModel){ 

     Log.i("Email is ",userInfo.userEmailAddress) 
     Log.i("Password is ",userInfo.userPassword) 

     userInfo.login(userInfo.userEmailAddress, userInfo.userPassword, mContext) 

    } 

} 

爲什麼會出現這個錯誤?我在click上重新檢查函數名稱和語法。

解決方案嘗試:1.清理並重建項目。

+0

上點擊只能在XML – Nithinlal

+0

你的意思是隻onLoginButtonClicked使用樂趣名(登錄)是否行得通呢? @Nithinlal –

+0

no onLoginButtonClicked()只能在xml上工作 – Nithinlal

回答

0

handler被定義爲變量,因此handler(context)是沒有意義的。

您只需要使用handler並在代碼中初始化對象。

handler.onLoginButtonClicked(login)

+0

我試過用這個android:onClick =「@ {() - > LoginHandler(context).onLoginButtonClicked(login)}」 但是沒有工作。你能通過示例代碼解釋你的答案嗎? @Kiskae –

+0

通過數據綁定文檔看起來像創建新對象是不可能的。所以你需要在你的代碼中初始化'handler',並用'handler.on *'調用該方法。 – Kiskae

+0

所以我不能在處理程序中傳遞上下文? –