새로운 데이터 바인딩 라이브러리를 사용하여 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을 사용하고 있습니다.
apply plugin: 'kotlin-kapt'
최신 버전의 앱 gradle 파일 만 있으면됩니다 .