새로운 데이터 바인딩 라이브러리를 사용하여 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
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
앱 디렉토리에있는 내 (관련 부분 만) :
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을 사용하고 있습니다.
답변
이 구성을 사용해보십시오.
메인 build.gradle에서 :
buildscript {
ext.kotlin_version = '<kotlin-version>'
ext.android_plugin_version = '2.2.0-alpha4'
dependencies {
classpath "com.android.tools.build:gradle:$android_plugin_version"
//... rest of the content
}
}
앱 build.gradle :
android {
dataBinding {
enabled = true
}
}
dependencies {
kapt "com.android.databinding:compiler:$android_plugin_version"
}
kapt {
generateStubs = true
}
답변
나는 새로운 해결책을 찾았습니다. 그것이 도움이되기를 바랍니다.
우선 플러그인이 적용되었는지 확인하십시오.
apply plugin: 'kotlin-kapt'
그때
android {
...
...
dataBinding {
enabled = true
}
...
...
}
종속성에 오류가있을 수 있습니다.
사용하다
kapt 'com.android.databinding:compiler:3.0.1'
대신에
compile 'com.android.databinding:compiler:3.0.1'
감사합니다.
답변
업데이트 2 : 이것은 정말 오래된 답변입니다. 대신 lrampazzo의 답변을 참조하십시오.
그것은 1.0-rc4와 함께 작동합니다.
kapt 'com.android.databinding:compiler:1.0-rc4'
당신의 의존성에
의견의 링크에 대해 감사합니다 Ghedeon
업데이트 : 여기 정말 간단한 hello world 예제 프로젝트가 있습니다.
답변
데이터 바인딩 컴파일러의 버전은 프로젝트 build.gradle 파일의 gradle 버전과 동일합니다.
// at the top of file
apply plugin: 'kotlin-kapt'
android {
dataBinding.enabled = true
}
dependencies {
kapt "com.android.databinding:compiler:3.0.0-beta1"
}
그리고 gradle 버전은
classpath 'com.android.tools.build:gradle:3.0.0-beta1'
다음은 kotlin에서 데이터 바인딩 라이브러리를 사용하여 완료하는 예제 링크입니다.
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
답변
문제를 해결하려면
apply plugin: 'kotlin-kapt'
build.gradle (Module : app) 상단에 다음 줄을 의존성에 넣습니다.
kapt "com.android.databinding:compiler:[YOUR_ANDROID_PLUGIN_VERSION]"
메뉴로 이동하여 안드로이드 플러그인 버전을 찾을 수 있습니다
File > Project Structure > Project
그런 다음 다시 동기화하십시오. 이 경고가 표시되면 무시하십시오.
타사 Gradle 플러그인이 원인 일 수 있습니다.
답변
안드로이드 스튜디오 2.0 (2.1)
에서 build.gradle
android{
dataBinding {
enabled = true
}
...
}
dependencies {
kapt 'com.android.databinding:compiler:2.0.0-rc1'
....
}
kapt {
generateStubs = true
}
내 프로젝트에서 : buildToolsVersion = "23.0.3"
최상위 build.gradle에서
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
}
답변
이것은 androidStudio ver3.1.3에서 나를 위해 작동합니다.
apply plugin: 'kotlin-kapt'
dataBinding {
enabled = true
}