У меня есть следующий класс фрагмента, написанный на Java с использованием новой библиотеки привязки данных
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();
}
}
Он компилируется и работает нормально.
Я попытался переписать это в Kotlin и придумал следующее:
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()
}
}
Но теперь шаг :app:compileDebugKotlin
выводит следующее:
Ошибка: (16, 38) Неразрешенная ссылка: привязка данных
Ошибка: (37, 27) Неразрешенная ссылка: FragmentDataBinding
Как я могу использовать библиотеку android-databinding с Kotlin?
Мой высший уровень 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()
}
}
Мой build.gradle
в приложении DIR (только соответствующие части):
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'
}
}
Я использую Android Studio 1.4, инструменты сборки версии 23.0.1, Android SDK 23, инструменты SDK 24.4.0
java
android
kotlin
android-databinding
Михаил
источник
источник
apply plugin: 'kotlin-kapt'
в файле приложения Gradle в последней версии.Ответы:
Попробуйте использовать эту конфигурацию:
В основном build.gradle :
Приложение build.gradle :
источник
2.2.0-alphaX
доступен, и к вашему сведению версия привязки данных такая же, как и у самого android-gradle-plugin. так что вы можете использовать эту версию и использовать ее в качестве версии компилятора.apply plugin: 'kotlin-kapt'
также добавить . См stackoverflow.com/a/42974558/1916449Я нашел новое решение, надеюсь, оно поможет вам.
Прежде всего, проверьте, применяется ли плагин:
затем
У вас может быть ошибка в зависимости:
ИСПОЛЬЗОВАНИЕ
вместо того
Вы можете посетить здесь для новой версии
Спасибо.
источник
Обновление 2: Это действительно старый ответ, вместо этого обратитесь к ответу Лрампаццо.
Работает с 1.0-rc4, поставил
в ваши зависимости
Спасибо Гедеон, за ссылку в комментариях
Обновление : Вот действительно простой пример проекта "Здравствуй, мир!"
источник
Exception while analyzing expression at (12,23) in /projectpath/KotlinDataBinding/app/src/main/java/com/example/kotlindatabinding/MainActivity.kt:
. У вас есть такие же ошибки? А какая у тебя версия андроид студии?Версия компилятора привязки данных совпадает с версией gradle в вашем файле build.gradle проекта:
и версия Gradle
Вот пример ссылки для завершения использования библиотеки привязки данных в kotlin.
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
источник
dataBinding.enabled = true
было то, что я забылЧтобы решить проблему, нужно поставить
в верхней части build.gradle (Module: app), затем поместите эту строку в зависимости
Вы можете найти версию плагина для Android, перейдя в меню
Затем снова синхронизируйте. Если вы видите это предупреждение, игнорируйте его.
источник
Попробуйте это. Andrid studio 2.0 (2.1)
В build.gradle
В моем проекте:
buildToolsVersion = "23.0.3"
в верхнем уровне build.gradle
источник
эта работа для меня в androidStudio ver3.1.3
источник
Конфигурация привязки данных в котлине
build.gradle (папка app)
Наслаждайтесь Kotlin ...
источник
Важное обновление
Вы можете увидеть в документации Android.
Так что просто обновите вашу Android Studio до V3.2 или новее . и удалите все ненужные конфигурации.
Так что просто включите привязку данных на уровне приложения
build.gradle
.Он сделает все для вас автоматически.
Вы можете безопасно удалить ниже линии-
Удалить databinding.compiler
удалять
kapt
Мой полный конфиг
build.gradle (проект)
Используйте Gradle последней версии . Используйте последнюю версию kotlin .
build.gradle (приложение)
Важно ! Не просто скопируйте и вставьте конфигурацию. Смотрите этот ответ для настройки версии Kotlin.
gradle-wrapper.properties
источник
В моем случае ошибка состояла в том, что
Unresolved reference: RegisterationUserBinding
я просто использовал свое имя макетаfragment_registeration_user
вот такFragmentRegisterationUserBinding
и сделал его в макете привязки данных, и ошибка исчезла.источник
Добавить следующее в вас
app build.gradle
Это сделает свое дело.
$android_plugin_version
это версияcom.android.tools.build:gradle
вapplication build.gradle
Кроме того, добавьте это в свой модуль
build.gradle
android { /// Existing Code kapt { generateStubs = true } }
источник
Добавить привязку данных в Android Project, используя, когда вы используете язык kotlin.
Ниже шаги
- Сначала вам нужно добавить плагин ниже
- Второе связывание данных включено true
Все это добавлено в app.build.gradle после нажатия «SYNC NOW».
Например, у вас есть редактировать профиль деятельности, а затем определить переменную привязки в kotlin ??
Здесь get binding - это метод для обработки типа привязываемого объекта.
источник
В моем случае добавление
Решил проблему для меня. Я проигнорировал это в первый раз, я думал, что это не имеет отношения к проблеме:
Но теперь привязка данных работает просто отлично.
источник
Я хочу поделиться своим собственным опытом. Для использования привязки данных с Kotlin в Android Studio достаточно добавить
После этого «синхронизируй это» и, очень важно, «сделай проект». После этого все ваши объекты будут активны для использования.
источник
Прежде чем пытаться использовать FragmentDetailsBinding, вам необходимо убедиться, что вы преобразовали соответствующий макет (фрагмент_детали.xml) в макет привязки данных, обернув весь макет в родительский тег тега "" и переместив все xmlns в тег макета, затем построите проект и все.
источник
Просто выйдите из всех зависимостей привязки данных и используйте это вместо
источник