Kotlin-Android : 확인되지 않은 참조 데이터 바인딩 새로운 데이터 바인딩 라이브러리를 사용하여

새로운 데이터 바인딩 라이브러리를 사용하여 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
}

사용 샘플 표시