6

Sadece aniden, android için bağlarım çalışmayı durdurdu, şimdi inşa ettiğim her şey, sadece bu mesajı alıyorum.Android Bindings Durduruyor

Hata: Yürütme ': app: compileDevDebugJavaWithJavac' görevinde başarısız oldu. Bir dosyaya kadar bağlama kullanılır nerede

İlk benim dosyalarda hata varsa derlemek olmaz bağlamaları öne sürüldü denedi Ne

java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Cannot find the getter for attribute 'android:text' with value type java.lang.String on android.widget.EditText. file:C:\path\to\layout\layout.xml loc:85:12 - 96:54 ****\ data binding error ****

, bu yüzden tüm düzen dosyaları kaldırılır layout.xml. Orada

<EditText 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:text="@{model.name}" /> 

var ... ve ben android:text="@={model.name}" bir önceki hatayı atar bağlayıcı iki yönlü eklemek Ancak eğer iyi çalışır.

Sonraki, ben o zaman yeni hata atıyor ...

@InverseBindingAdapter(attribute = "android:text") 
public static String captureEditTextValue(EditText view) { 
    return view.getText().toString(); 
} 

ekleyin.

Hata: Yürütme ': app: compileDevDebugJavaWithJavac' görevinde başarısız oldu.

java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Could not find event 'android:textAttrChanged' on View type 'android.widget.EditText' file:C:\Users\EdgeTech\AndroidStudioProjects\purse\purse-customer\app\src\main\res\layout\get_phone_layout.xml loc:85:12 - 96:54 ****\ data binding error ****

halen önceki hata veriyor ... Bu

@InverseBindingAdapter(attribute = "android:text", event = "android:textAttrChanged") 
public static String captureEditTextValue(EditText view) { 
     return view.getText().toString(); 
} 

için refactor, ayrıca gitti.

My Kur

  • Android Studio: 2.3.3
  • Gradle kurmak Araçları: 2.3.3
+0

İki yönlü ciltleme söz konusu olduğunda, 'android: text = "@ = {model.name}" 'değişkeniniz" String "ise bu satır yeterlidir, eğer başka veri tipleriniz varsa, tersi yapmanız gerekir bağlayıcı. –

+0

@RaviRupareliya evet 'bir dizgedir. – oreofeolurin

+0

Daha önce de söylediğim gibi, eğer 'String' ise, 'InverseBinding' gerekli değildir. –

cevap

3

İki yönlü bu tip: Örneğin

ObservableField<T> 

: viewModel.class içinde

Düzende
public ObservableField<String> productName = new ObservableField<>(); 

.xml:

<EditText 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:text="@={viewModel.productName}" /> 
2

Ben gerekli olduğuna inanmıyorum olarak InverseBindingAdapter kurtulun dizi. Daha sonra, EditText XML etiketinizde android:text="@={model.name} ->android:text="@={`` + model.name}" ->android:text="@={`` + model.name}" öğelerini değiştirin.

+0

Sorununuzu çözmezse lütfen bildirin. Android 2.3+ üzerinde çalıştığınızı görüyorum (hata düzeltmesi için minimum destek), bu çözüm sorunu çok iyi çözebilir. –

1

Sadece değiştirmek mümkün olmalıdır:

@InverseBindingAdapter(attribute = "android:text") 
public static String captureEditTextValue(EditText view) { 
    return view.getText().toString(); 
} 

için: bağlayıcı ihtiyaçları

@InverseBindingAdapter(attribute = "android:text") 
public static String getText(TextView view) { 
    return view.getText().toString(); 
} 
1

sayesinde artık

çalışıyor Ancak. Build Tools ve SDK Platform araçlarını sürümüne yükselttikten sonra çalışmaya başladı. Yine de neden sürümüyle kırıldığını bilmiyoruz.

Sağlanan tüm çözümleri denedim, hiçbir faydası olmadı, yükseltme, benim için çalışan tek çözüm buydu.