Mam następującą klasę fragmentów napisaną w Javie przy użyciu nowej biblioteki wiązania danych
import com.example.app.databinding.FragmentDataBdinding;
public class DataFragment extends Fragment {
@Nullable
private FragmentDataBinding mBinding;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false);
return mBinding.getRoot();
}
}
Kompiluje się i działa dobrze.
Próbowałem przepisać to w Kotlinie i wymyśliłem:
import com.example.app.databinding.FragmentDataBdinding
class ProfileFragment : Fragment() {
private var mBinding: FragmentDataBinding? = null
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false)
return mBinding!!.getRoot()
}
}
Ale teraz krok :app:compileDebugKotlin
wyświetla następujące informacje:
Błąd: (16, 38) Nierozwiązane odwołanie: wiązanie danych
Błąd: (37, 27) Nierozwiązane odwołanie: FragmentDataBinding
Jak mogę używać biblioteki powiązań danych z systemem Android w Kotlin?
Mój najwyższy poziom build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.android.databinding:dataBinder:1.0-rc4'
}
}
allprojects {
repositories {
jcenter()
}
}
Mój katalog build.gradle
w aplikacji (tylko istotne części):
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
apply plugin: 'kotlin-android'
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
buildscript {
ext.kotlin_version = '0.14.451'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
repositories {
mavenCentral()
maven {
url 'http://oss.sonatype.org/content/repositories/snapshots'
}
}
Używam Android Studio 1.4, narzędzi do kompilacji w wersji 23.0.1, zestawu SDK systemu Android 23, narzędzi SDK 24.4.0
java
android
kotlin
android-databinding
Michaił
źródło
źródło
apply plugin: 'kotlin-kapt'
plik gradle aplikacji w najnowszej wersji.Odpowiedzi:
Spróbuj użyć tej konfiguracji:
W głównym build.gradle :
Aplikacja build.gradle :
źródło
2.2.0-alphaX
jest dostępny, a FYI wersja wiązania danych jest taka sama, jak w przypadku samej wtyczki android-gradle. więc możesz udostępnić tę wersję na zewnątrz i użyć jej jako wersji kompilatora.apply plugin: 'kotlin-kapt'
też dodać . Zobacz stackoverflow.com/a/42974558/1916449Znalazłem nowe rozwiązanie, mam nadzieję, że ci pomoże.
Przede wszystkim sprawdź, czy zastosowana wtyczka:
następnie
Możesz mieć błąd w zależności:
POSŁUGIWAĆ SIĘ
zamiast
Możesz odwiedzić tutaj nową wersję
Dziękuję Ci.
źródło
Aktualizacja 2: To jest naprawdę stara odpowiedź, zamiast tego odwołaj się do odpowiedzi lrampazzo.
Działa z 1.0-rc4, put
do twoich zależności
Dzięki Ghedeon za link w komentarzach
Aktualizacja : Oto naprawdę prosty przykładowy projekt Hello World
źródło
Exception while analyzing expression at (12,23) in /projectpath/KotlinDataBinding/app/src/main/java/com/example/kotlindatabinding/MainActivity.kt:
. Czy masz te same błędy? A jaka jest Twoja wersja Android Studio?Wersja kompilatora powiązania danych jest taka sama, jak wersja programu Gradle w pliku build.gradle projektu:
a wersja gradle to
Oto przykładowe łącze umożliwiające pełne wykorzystanie biblioteki wiązania danych w kotlin.
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
źródło
dataBinding.enabled = true
było to, o czym zapomniałemAby rozwiązać problem, musisz umieścić
u góry build.gradle (Module: app), a następnie umieść tę linię w zależnościach
Możesz znaleźć wersję wtyczki Androida, przechodząc do menu
Następnie zsynchronizuj ponownie. Jeśli zobaczysz to ostrzeżenie, zignoruj je.
źródło
Spróbuj tego.Andrid studio 2.0 (2.1)
W build.gradle
W moim projekcie:
buildToolsVersion = "23.0.3"
na najwyższym poziomie build.gradle
źródło
ta praca dla mnie w androidStudio ver3.1.3
źródło
Powiązanie danych konfiguracyjnych w kotlin
build.gradle (aplikacja folderu)
Ciesz się Kotlinem ...
źródło
Ważna aktualizacja
Możesz zobaczyć w dokumentacji Androida.
Więc wystarczy zaktualizować swoją Android Studio V3.2 lub nowsza . i usuń wszystkie niepotrzebne config.
Po prostu włącz DataBinding na poziomie aplikacji
build.gradle
.Zrobi wszystko automatycznie.
Możesz BEZPIECZNIE USUNĄĆ poniższe linie-
Usuń databinding.compiler
Usunąć
kapt
Moja pełna konfiguracja
build.gradle (projekt)
Użyj najnowszej wersji Gradle . Użyj najnowszej wersji Kotlin .
build.gradle (aplikacja)
Ważne Nie tylko kopiuj i wklejaj config. Zobacz tę odpowiedź, aby skonfigurować wersję Kotlin.
gradle-wrapper.properties
źródło
W moim przypadku błąd polegał na tym,
Unresolved reference: RegisterationUserBinding
że po prostu użyłem mojej nazwy układu wfragment_registeration_user
ten sposóbFragmentRegisterationUserBinding
i zrobiłem to w układzie Databinding, a błąd zniknął.źródło
Dodaj w sobie obserwujących
app build.gradle
To wystarczy.
$android_plugin_version
to wersjacom.android.tools.build:gradle
wapplication build.gradle
Dodaj to również do swojego modułu
build.gradle
android { /// Existing Code kapt { generateStubs = true } }
źródło
Dodaj wiązanie danych w Android Project używając, gdy używasz języka kotlin.
Poniżej kroki
- Najpierw musisz dodać poniższą wtyczkę
--Drugie wiązanie danych włączone prawda
Wszystko to zostało dodane w app.build.gradle po kliknięciu „SYNCHRONIZUJ TERAZ”
Pozwala na przykład edytować aktywność profilu, to jak zdefiniować zmienną wiążącą w kotlin?
Tutaj get binding jest metodą do obsługi typu obiektu powiązania
źródło
W moim przypadku dodanie
Rozwiązał problem za mnie. Zignorowałem to za pierwszym razem, pomyślałem, że nie ma to związku z problemem:
Ale teraz wiązanie danych działa dobrze.
źródło
Chcę podzielić się własnym doświadczeniem. Aby użyć powiązania danych z Kotlin w Android Studio wystarczy dodać
Następnie „zsynchronizuj” i, bardzo ważne, „utwórz projekt”. Po tym wszystkim twój obiekt będzie aktywny.
źródło
Zanim spróbujesz użyć FragmentDetailsBinding, musisz się upewnić, że przekonwertowałeś odpowiedni układ (fragment_details.xml) na układ wiązania danych przez zawinięcie całego układu w element nadrzędny tagu "" i przeniesienie wszystkich xmlns do tagu układu, a następnie skompilowanie projektu i to wszystko
źródło
Po prostu usuń wszystkie zależności związane z danymi i użyj tego zamiast tego
źródło