6

से अवलोकन योग्य वर्ग फ़ील्ड को संदर्भित करने में सक्षम नहीं है मैं एंड्रॉइड के लिए नई डेटा बाध्यकारी प्लगइन देख रहा हूं और इसे एक परियोजना में एकीकृत करने की कोशिश कर रहा हूं।एक्सएमएल लेआउट

private static class User extends BaseObservable { 
    private String firstName; 
    private String lastName; 
    @Bindable 
    public String getFirstName() { 
     return this.firstName; 
    } 
    @Bindable 
    public String getFirstName() { 
     return this.lastName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
     notifyPropertyChanged(BR.firstName); 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
     notifyPropertyChanged(BR.lastName); 
    } 
} 

:

public class User extends BaseObservable { 
    public final ObservableField<String> firstName = 
     new ObservableField<>(); 
    public final ObservableField<String> lastName = 
     new ObservableField<>(); 
    public final ObservableInt age = new ObservableInt(); 
} 

स्निपेट के ऊपर के स्थान पर होगा:

जबकि नमूदार वस्तुओं बनाने के बारे में पढ़ना, मैं ObservableFields प्रलेखन कि दस्तावेज़ से आत्म निहित नमूदार वस्तुओं उदाहरण का इस्तेमाल किया जाता का सामना करना पड़ा जो काफी कम कोड है; लेकिन जब प्रत्यक्ष फील्ड्स और संदर्भ में इस तरह की तरह एक्सएमएल लेआउट से तो का उपयोग कर:

<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
    <data> 
     <variable name="user" type="com.example.User"/> 
    </data> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@{user.lastName}" 
      android:id="@+id/lastName"/> 

    </LinearLayout> 
</layout> 

मैं इस त्रुटि हो रही है:

../../databinding/ActivityMainBinding.java 
Error:(127, 20) error: cannot find symbol variable lastName 

और वह सब पर वर्बोज़ नहीं है; पर्यवेक्षण फ़ील्ड का उपयोग नहीं करना एक आकर्षण की तरह काम करता है।

Documentation reference

किसी को भी इस मुद्दे का सामना करना पड़? विचार?

+0

लेआउट के लिए xml पोस्ट करें कृपया? – fakataha

+0

@atamakosi हम यहां जाते हैं! –

+0

क्या हमें पहले मामले में "बेस ऑब्सर्जेबल" विस्तार करना है? – Debanjan

उत्तर

5

यह हमारी ओर से कोई बग की तरह दिखता है। मैंने सुना है कि @Bindable समस्या को हल करता है लेकिन डेटा बाध्यकारी इसे Bindable एनोटेशन w/o ढूंढने में सक्षम होना चाहिए। मैंने आंतरिक रूप से एक बग बनाया है, धन्यवाद।

+3

इसके लिए धन्यवाद। शायद यह समय के लिए दस्तावेज के साथ दस्तावेज अद्यतन करने लायक है? चीयर्स –

+1

fyi, फिक्स आरसी 1 में जारी किया जाएगा – yigit

1

ObservableField को संकलित करने के लिए @Bindable एनोटेशन के साथ एनोटेट करने की आवश्यकता है।

स्रोत Bindable एनोटेशन राज्यों के लिए:

this is necessary for java analyzer to work

तो यह इस तरह लग रही समाप्त होता है:

public class User extends BaseObservable { 
    @Bindable 
    public final ObservableField<String> firstName = 
     new ObservableField<>(); 
    @Bindable 
    public final ObservableField<String> lastName = 
     new ObservableField<>(); 
    @Bindable 
    public final ObservableInt age = new ObservableInt(); 
} 
संबंधित मुद्दे