2017-04-18 116 views
-1

工作,我有這個類用戶的OnClick數據綁定不是機器人

Class User

,我試圖執行的onClick在android系統結合我也有這個演示類

Presenter Class

我初始化我這樣的綁定 enter image description here

此外,在我的XML文件

enter image description here

我設置我的變量,但我得到這個錯誤編譯 enter image description here

+0

你配置gradle文件進行數據綁定嗎? – uguboz

+1

User.adress是observablestring而不是一個字符串。更改參數類型 – uguboz

+0

我已將其更改爲Observable 並且它不工作不顯示 錯誤:(37,39)在類com.example.alternative.mytest.Presenter中找不到方法onSaveClick(java.lang.String) 即使是我實現這樣的: 公共無效onSaveClick(ObservableField 任務) 和: 機器人:的onClick =「@ {(v) - > presenter.onSaveClick(用戶。地址)}「 – Oussaki

回答

2

你傳遞一個View通過參數和你的方法Presenter類是當沒有收到它。 要解決此問題,改變你的方法是:

public class Presenter{ 
     public void onSaveClick(View view, String task){ 
      Log.i("log", "Action" + task) 
     } 

,然後通過它在你的XML:

android:onClick="@{(v) -> presenter.onSaveClick(v, user.address)}" 
+0

不解決這個問題它仍然是一樣的,爲什麼通過額外的觀點參數我不需要它。 – Oussaki

+0

對不起。我編輯我的答案。現在檢查。 –

+0

您需要傳遞它,因爲onClick處理程序在簽名中有一個視圖。 –

0

要麼改變XML

android:onClick="@{() -> presenter.onSaveClick(user.address.get())}"

或演示

onSaveClick (ObservableField<String> address){ 

Log.d ("log", address.get()) 
} 
+0

更改爲android:onClick =「@ {() - > presenter.onSaveClick(user.address.get())}」 和: public void onSaveClick(String task){ ,get this Error:can not find method get ()in class java.lang.String – Oussaki

+0

在佈局xml的數據標記內添加,然後再次嘗試 – uguboz

+0

第二個選項也必須工作 – uguboz

0

用戶模型:

private ObservableField<String> address = new ObservableField<>(); 

public String getAddress() { 
    return address.get(); 
} 

public void setAddress(String address) { 
    this.address.set(address); 
} 

XML:

<Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@{user.address}" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="8dp" 
     android:onClick="@{(v) -> event.onSaveCLick(user.address)}"/> 

的Java:

public class Presenter{ 
     public void onSaveCLick(String task){ 
      Toast.makeText(MainActivity.this,"Address"+task,Toast.LENGTH_SHORT).show(); 
     } 
    } 
0

它,因爲你引用演示正確.The錯誤是說你錯了包時輸入!在XML中設置變量。它實際上與android:onClick無關,但是您引用演示者的事實並未綁定它。在您設置演示者之後的活動中,您必須執行mainBinding.setVariable(BR.presenter,演示者);那之後它應該工作得很好。

相關問題