Nie otrzymałem zadowalających odpowiedzi. Oto wskazówki, które są podsumowaniem mojej wiedzy na temat wiązania danych.
Wskazówki dotyczące rozwiązywania problemów z wiązaniem danych
Aktualizacja
Aby uzyskać dokładniejsze błędy i sugestie , zdecydowanie zalecamy aktualizację wersji wtyczki Android Studio i Gradle do najnowszej. Ponieważ po wersji AS 3.2 nie mam wielu problemów.
Zobacz najnowsze Android Studio i najnowszą wtyczkę Gradle .
Oryginalne rozwiązanie
Po przeczytaniu tej odpowiedzi nie utkniesz w problemach z automatycznym generowaniem powiązań danych zarówno dla klas, jak i zmiennych danych .
Sprawdź te punkty jeden po drugim. Każdy z nich może sprawić, że Twoja praca będzie wykonana. Ostatni punkt jest naprawdę ważny, więc nie przegap ich.
1. Sprawdź, czy włączono wiązanie danych
Powinieneś mieć włączone powiązanie danych w programie build.gradle
. Jeśli nie, dodaj to i Synchronizuj .
android {
...
dataBinding {
enabled = true
}
...
}
2. Układ sprawdzenia jest konwertowany na układ oprawy
Teraz, jeśli chcesz, aby klasa powiązania danych została wygenerowana, powinieneś opakować xml layout
wiązaniem danych ( <layout
tag). Coś takiego.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
</layout>
Wraz z tym sprawdź, czy nazwy zmiennych wiążących są poprawne, jak w klasie modelu widoku
3. Automatycznie wygenerowana nazwa klasy powiązania?
Klasa powiązania danych powinna zostać wygenerowana po utworzeniu układu powiązania.
Jeśli nazwa układ jest w przypadku węża activity_main.xml
następnie klasy powiązania danych zostanie wygenerowany w przypadku wielbłądów podobnego ActivityMainBinding
.
4. Nie widzisz sugestii importu?
Czasami podczas pisania ActivityMai...
, to nie pokazuje sugestię , w tym przypadku importu ręcznie .
import <yourpackage>databinding.ActivityMainBinding;
5. Przeczytaj dziennik błędów kompilacji
Twoja klasa wiążąca i nowe zmienne w układzie nie zostaną wygenerowane, jeśli kompilacja się nie powiedzie. Więc najpierw Stwórz projekt przez Ctrl + F9 (Kompiluj> Utwórz projekt) .
- Jeśli kompilacja się nie powiedzie, zobacz, co jest błędem, zwykle mamy błędy w polach układu. Dzienniki błędów wskażą numer wiersza błędu, w którym występuje problem.
- Wiązanie może się nie powieść, powodując głupi błąd , taki jak błąd składni lub brak importu. W takim przypadku otrzymasz logcat pełen błędów związanych z klasami. Ale powinieneś przeczytać cały logcat, aby znaleźć odpowiedni problem .
6. Zamknij i otwórz projekt z ostatnich
Zawsze to robię, ponieważ zajmuje to znacznie mniej czasu niż Rebuild
/ Make
project.
- Zamknij projekt z Plik> Zamknij projekt
- Otwórz ponownie od ostatnich
Zauważ, że wolę Zamknij i Otwórz od ostatniego, ponieważ zajmuje to znacznie mniej czasu niż Rebuild / Restart IDE .
7. Przebuduj projekt
Jeśli nadal Twoja klasa nie jest generowana. (Jakiś czas, kiedy wklejamy plik układu, to się dzieje). Następnie Przebuduj projekt z Build> Rebuild
( nie buduj ani nie twórz projektu ). Wygeneruje klasę powiązania danych. ( Rebuild robi dla mnie Magic. )
8. Miej najnowszą wersję Android Studio
Po aktualizacji AS do Android Studio 3.2 zauważyłem , że naprawiono wiele błędów w automatycznym generowaniu powiązań danych. Więc powinieneś mieć również najnowszy AS.
Rozwiązanie dla <variables
<data>
<variable
name="item"
type="com.package.Model"/>
</data>
Zwykle, gdy umieszczamy zmienną w układzie, tworzy ona metodę pobierającą i ustawiającą. Możemy użyć binding.setItem(item);
i binding.getItem();
, ale jeśli nie widzisz tych metod, przeczytaj poniższe informacje.
1. Zamknij i otwórz projekt z ostatnich
Jeśli utworzyłeś zmienną danych - <variable
w swoim układzie i nie pokazuje ona jej ustawiającego i pobierającego w klasie powiązania danych, wtedy Zamknij i Otwórz z ostatniego projektu.
2. Wyczyść projekt po zmianie typu
Jeśli zmieniłeś typ jakiegoś <variable
w swoim układzie i typ ustawiacza metody pobierania się nie zmienia, to Wyczyść projekt ( Build> Clean Project
)
Ostatnie słowa
Wreszcie, jeśli nadal nie jest generowana klasa wiążąca, mamy naszą najpotężniejszą broń. - Uruchom ponownie Android Studio: D.
- Najpierw spróbuj ponownie uruchomić , to zawsze generuje zmienne mojego układu powiązań po ponownym uruchomieniu.
- Jeśli to nie zadziała, unieważnij pamięć podręczną i uruchom ponownie .
To wszystko, co robię, aby rozwiązać błędy związane z wiązaniem danych. Jeśli pojawią się dalsze problemy, możesz skomentować tutaj.
dataBinding.enabled
w twoim build.gradle?