2016-09-06 3 views
1

Ich versuche Ansichten passieren Zuhörer mit in onFocusChange Funktion zu binden, jedoch die folgenden FehlerPass Ansichten in OnFocusChange in Datenbindung Android

Der Rückruf android.view.View.OnFocusChangeListener # onFocusChange hat zwei Methoden erhalten, aber die Lambda definiert hat 1. Es sollte entweder 0 oder die gleiche Anzahl von Parametern haben.

Bitte helfen Sie mir, den richtigen Weg zu finden, dies zu implementieren.

<variable 
     name="user" 
     type="com.webage.www.vco_address.User" /> 

    <variable 
     name="obj" 
     type="com.webage.www.colin.Validations" /> 



</data> 
    <EditText 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="82dp" 
     android:text="@={user.name}" 
     android:onFocusChange="@{(view)->obj.saveClick(view, user.name)}" /> 

Validierungen

public class Validations { 
    public void saveClick(View view, String name){ 
     Log.v("saveClick",name); 
    } 
} 
+1

Bitte schreiben Sie den Code für 'saveClick()'. –

+0

Auch was ist die '' Deklaration für 'obj'? (Bearbeiten Sie Ihre Frage. Geben Sie keinen Kommentar mit dieser Information ein.) –

+0

Bitte lassen Sie mich wissen, was ich hier falsch mache. – Colin11

Antwort

4

Ich glaube, dass die Fehlermeldung falsch formuliert ist. Es macht keinen Sinn, dass onFocusChange() zwei Methoden hat, da es eine Methode ist. Wahrscheinlicher ist das Problem, dass onFocusChange() zwei Parameter, eine View und eine boolean hat. Sie haben das Lambda für nur einen Parameter deklariert. Fügen Sie einfach einen zweiten Parameter zum Lambda hinzu.

+0

Wenn ich einen booleschen Wert übergebe, kann ich den Wert von user.name nicht abrufen. Bitte erklären Sie mir, wie ich den Wert von user.name abrufen kann. – Colin11

+0

@ Colin11 Das Lambda muss ** einen booleschen Wert ** akzeptieren. Sie können entweder 'saveClick()' ändern, um drei Parameter zu übernehmen, oder den booleschen Wert ignorieren. –

+0

Vielen Dank! Es funktionierte :) – Colin11

Verwandte Themen