작성
·
23
·
수정됨
0
databinding 관련 세팅 이후 실행시 매번 같은 에러가 발생하고 있습니다.
gradle, xml을 조금씩 바꿔보아도 직전까진 잘 되는데 데이터바인딩 관련 코드가 들어가면 아래와 같은 에러가 발생하네요..ㅠㅠ
왜 이런걸까요
Github Link : https://github.com/Hwangseok-Paris/Kotlin_Study_1/tree/databinding#
------ 추가 ------
이것저것 테스트 많이 해 봤는데 build.gradle.kts 에서
dataBinding { enable = true} 또는 buildFeatures { dataBinding = true }을 넣고 sync 이후에 run 시 문제가 발생하고 있습니다.(다른 파일은 초기 상태 그대로인 상태)
저걸 지우고 다시 싱크를 한 다음 실행시키면 아무 일 없었다는 듯 정상 실행이 되네요..
도움이 될까 싶어 build.gradle.kts 파일 내용 첨부드립니다.
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
android {
namespace = "com.example.test"
compileSdk = 36
defaultConfig {
applicationId = "com.example.test"
minSdk = 24
targetSdk = 36
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 김황석님,
데이터바인딩 설정 후 발생하는 오류는 주로 몇 가지 원인으로 발생할 수 있습니다. 제공하신 java.lang.IllegalArgumentException: source must not be null
오류는, 객체가 초기화되지 않거나 null인 값을 참조할 때 나타날 수 있습니다. 다음과 같은 단계를 통해 문제를 해결할 수 있습니다:
XML 파일 구조 확인: DataBinding을 사용하려면 XML 파일의 루트가 <layout>
태그로 감싸져 있는지 확인하세요. <layout>
태그 안에 기존의 루트 뷰(예: ConstraintLayout
)가 포함되어야 합니다.
빌드 설정 확인: build.gradle
파일에서 DataBinding이 제대로 활성화되어 있는지 확인하세요. 다음과 같이 설정되어 있어야 합니다.
android {
...
buildFeatures {
dataBinding = true
}
}
패키지 및 경로 확인: 에러 메시지를 통해 오류가 발생하는 위치를 정확히 파악하세요. 자주 발생하는 문제는 패키지 경로의 누락이나 잘못된 설정에 기인합니다. 질문에 제공하신 GitHub 링크의 파일 구조를 다시 한 번 확인하시기 바랍니다.
코틀린 코드를 통한 바인딩: Activity에서 바인딩 객체를 초기화할 때 DataBindingUtil
을 사용하고 있는지 확인하세요. 예를 들어:
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
}
위의 코드처럼 바인딩을 초기화해야 합니다.
로그 분석: 안드로이드 스튜디오의 Logcat 정보를 더 상세히 확인해서 오류가 어떤 파일 및 코드 라인에서 발생하는지 살펴보세요.
데이터바인딩 설정 이후의 에러와 관련하여 기존 질문 databinding에러를 참고하시면 도움이 될 수 있습니다. 추가적인 도움이 필요하시면 다시 문의해주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
개발환경이 다르면 오류가 날 수는 있지만 OS문제는 아닌 것 같습니다!
프로젝트안에 프로젝트가 또 있는 구조로 되어있는 것 같은데 databinding하나만 별도의 프로젝트로 만들어서 잘 안되시면 깃허브 링크를 공유해주시면 제가 한번 살펴보겠습니다!