Tengo la siguiente clase de fragmento escrita en Java usando la nueva biblioteca de enlace de datos
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();
}
}
Se compila y funciona bien.
Traté de reescribirlo en Kotlin y se me ocurrió lo siguiente:
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()
}
}
Pero ahora el paso :app:compileDebugKotlin
genera lo siguiente:
Error: (16, 38) Referencia sin resolver: enlace de datos
Error: (37, 27) Referencia sin resolver: FragmentDataBinding
¿Cómo puedo usar la biblioteca de enlace de datos de Android con Kotlin?
Mi nivel superior 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()
}
}
Mi build.gradle
directorio en la aplicación (solo partes relevantes):
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'
}
}
Estoy usando Android Studio 1.4, Build tools versión 23.0.1, Android SDK 23, SDK tools 24.4.0
java
android
kotlin
android-databinding
Mikhail
fuente
fuente
apply plugin: 'kotlin-kapt'
archivo gradle de la aplicación en la versión más reciente.Respuestas:
Intenta usar esta configuración:
En build.gradle principal :
App build.gradle :
fuente
2.2.0-alphaX
está disponible, y para su información, la versión de enlace de datos es la misma que la del complemento android-gradle. para que pueda externalizar esa versión y usarla como la versión del compilador.apply plugin: 'kotlin-kapt'
también. Ver stackoverflow.com/a/42974558/1916449Encontré una nueva solución, espero que te ayude.
En primer lugar, compruebe si se aplica el complemento:
luego
Es posible que tenga un error en la dependencia:
UTILIZAR
en vez de
Puedes visitar aquí para una nueva versión
Gracias.
fuente
Actualización 2: Esta es una respuesta muy antigua, en cambio, consulte la respuesta de lrampazzo.
Funciona con 1.0-rc4, pon
en tus dependencias
Gracias Ghedeon, por el enlace en los comentarios.
Actualización : Aquí hay un proyecto de ejemplo de hello world realmente simple
fuente
Exception while analyzing expression at (12,23) in /projectpath/KotlinDataBinding/app/src/main/java/com/example/kotlindatabinding/MainActivity.kt:
. ¿Tienes los mismos errores? ¿Y cuál es tu versión de estudio de Android?La versión del compilador de enlace de datos es la misma que la versión gradle en el archivo build.gradle de su proyecto:
y la versión gradle es
Aquí hay un enlace de ejemplo para completar el uso de la biblioteca de enlace de datos en kotlin.
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
fuente
dataBinding.enabled = true
era lo que estaba olvidandoPara resolver el problema, tienes que poner
en la parte superior de build.gradle (Módulo: aplicación), luego ponga esta línea en dependencias
Puede encontrar la versión del complemento de Android yendo al menú
Luego sincronice nuevamente. Si ve esta advertencia, ignórela.
fuente
Prueba esto.Andrid studio 2.0 (2.1)
En build.gradle
En mi proyecto:
buildToolsVersion = "23.0.3"
en el nivel superior build.gradle
fuente
esto funciona para mí en androidStudio ver3.1.3
fuente
Enlace de datos de configuración en kotlin
build.gradle (aplicación de carpeta)
Disfruta Kotlin ...
fuente
Actualización importante
Puedes ver en la documentación de Android.
Así que solo actualice su Android Studio a V3.2 o posterior . y elimine toda la configuración innecesaria.
Entonces, solo habilite dataBinding en el nivel de la aplicación
build.gradle
.Hará todas las cosas por usted automáticamente.
PUEDE QUITARSE SEGURAMENTE debajo de las líneas-
Eliminar databinding.compiler
Eliminar
kapt
Mi configuración completa
build.gradle (Proyecto)
Utiliza la última versión de gradle . Use la última versión de kotlin .
build.gradle (aplicación)
Importante No solo copie y pegue la configuración. Consulte esta respuesta para configurar la versión de Kotlin.
gradle-wrapper.properties
fuente
En mi caso, el error fue
Unresolved reference: RegisterationUserBinding
que simplemente utilicé mi nombre de diseño defragment_registeration_user
esta maneraFragmentRegisterationUserBinding
y lo hice en el diseño de enlace de datos y el error desapareció.fuente
Añadir seguimiento en ti
app build.gradle
Esto hará el truco.
$android_plugin_version
es la versión decom.android.tools.build:gradle
enapplication build.gradle
Además, agregue esto a su módulo
build.gradle
android { /// Existing Code kapt { generateStubs = true } }
fuente
Agregue Databinding en Android Project usando cuando haya usado el lenguaje kotlin.
A continuación los pasos
--Primero necesita agregar el complemento a continuación
--Segundo enlace de datos habilitado verdadero
Todo este punto agregado en app.build.gradle después de presionar "SINCRONIZAR AHORA"
Permite, por ejemplo, editar actividad de perfil, ¿cómo definir la variable de enlace en kotlin?
Aquí, obtener enlace es un método para manejar qué tipo de objeto de enlace
fuente
En mi caso, agregando
Resolvió el problema para mí. Lo ignoré la primera vez, pensé que era irrelevante para el problema:
Pero ahora, el enlace de datos funciona bien.
fuente
Quiero compartir mi propia experiencia. Para usar el enlace de datos con Kotlin en Android Studio es suficiente agregar
Después de eso "sincronízalo" y, es muy importante, "hacer Project". Después de eso, todo su objeto estará activo para usar.
fuente
Antes de intentar usar FragmentDetailsBinding, debe asegurarse de convertir el diseño correspondiente (fragment_details.xml) en un diseño de enlace de datos envolviendo todo el diseño en la etiqueta "" padre y mover todos los xmlns a la etiqueta de diseño, luego construir el proyecto y listo.
fuente
Simplemente salga de todas las dependencias de enlace de datos y use esto en su lugar
fuente