स्ट्रिंग के लिए @ बाइंडिंग कनवर्जन बनाने की कोशिश करते समय एक रहस्यमय समस्या में भाग लें।
निम्नलिखित कोड तार को तैरता के लिए काम करता है:एंड्रॉइड डेटा बाध्यकारी @ बाइंडिंग कॉन्फ़्रेंस विफलता int को स्ट्रिंग करने के लिए
xml:
...
<variable
name="myViewModel"
type="... .SomeModel" />
...
<TextView
style="@style/StyleStuff"
android:text="@{myViewModel.number}" />
कोड:
public class SomeModel {
public ObservableFloat number = new ObservableFloat();
}
और सेटिंग:
viewModel.number.set(3.14f);
लेकिन अगर मैं इंच के लिए पर एक ही चीज़ का प्रयास करता हूं तो मुझे एक क्रैश मिलता है।
public ObservableInt number = new ObservableInt();
viewModel.number.set(42);
साथ
मैं निम्नलिखित हो:
FATAL EXCEPTION: main
Process: ...myapplication, PID: 14311
android.content.res.Resources$NotFoundException: String resource ID #0xfa0
at android.content.res.Resources.getText(Resources.java:1123)
at android.support.v7.widget.ResourcesWrapper.getText(ResourcesWrapper.java:52)
at android.widget.TextView.setText(TextView.java:4816)
at ...executeBindings(ActivityAdaptersBinding.java:336)
at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:355)
कोई भी विचार? धन्यवाद!
अहा की तरह! धन्यवाद! मैंने सोचा होगा कि डेटा बाइंडिंग टेक्स्ट दृश्य को हिट करने से पहले int को जांच और कनवर्ट करेगा, लेकिन स्पष्ट रूप से ~ इसका मतलब यह है कि जब भी मूल प्रकार का गलत व्याख्या किया जा सकता है और बिना मारने के उपयोग किया जाता है तो हमें बाध्यकारी कनवर्सन का उपयोग करते समय सावधान रहना चाहिए कनवर्टर। – Dave
@ डेव: "मैंने सोचा होगा कि डेटा बाध्यकारी टेक्स्ट दृश्य को हिट करने से पहले int को जांच और कनवर्ट करेगा" - नहीं, क्योंकि सभी डेटा बाध्यकारी के लिए, आप * इसे एक स्ट्रिंग संसाधन आईडी दे रहे हैं। "इसका मतलब है कि हमें सावधान रहना चाहिए" - हाँ। :-) – CommonsWare
यदि आप 2-तरफा बाध्यकारी बनाना चाहते हैं तो आप यह कैसे करेंगे? – InfernalRapture