강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

김황석님의 프로필 이미지
김황석

작성한 질문수

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

데이터바인딩(Databinding) 설명

databinding 설정 이후 실행시 에러

작성

·

23

·

수정됨

0

databinding 관련 세팅 이후 실행시 매번 같은 에러가 발생하고 있습니다.

gradle, xml을 조금씩 바꿔보아도 직전까진 잘 되는데 데이터바인딩 관련 코드가 들어가면 아래와 같은 에러가 발생하네요..ㅠㅠ

왜 이런걸까요


Github Link : https://github.com/Hwangseok-Paris/Kotlin_Study_1/tree/databinding#

스크린샷 2025-09-19 오전 11.31.21.png



------ 추가 ------

이것저것 테스트 많이 해 봤는데 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

김황석님의 프로필 이미지
김황석
질문자

맥os로 수강중이었는데 혹시나 해서 윈도우로 똑같이 해 보니 윈도우에서는 정상 작동 하네요
맥에서 별도 세팅해야 하는 부분이 있는걸까요...?

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

개발환경이 다르면 오류가 날 수는 있지만 OS문제는 아닌 것 같습니다!

스크린샷 2025-09-20 오후 6.54.51.png

 

프로젝트안에 프로젝트가 또 있는 구조로 되어있는 것 같은데 databinding하나만 별도의 프로젝트로 만들어서 잘 안되시면 깃허브 링크를 공유해주시면 제가 한번 살펴보겠습니다!

0

안녕하세요, 인프런 AI 인턴입니다. 김황석님,

데이터바인딩 설정 후 발생하는 오류는 주로 몇 가지 원인으로 발생할 수 있습니다. 제공하신 java.lang.IllegalArgumentException: source must not be null 오류는, 객체가 초기화되지 않거나 null인 값을 참조할 때 나타날 수 있습니다. 다음과 같은 단계를 통해 문제를 해결할 수 있습니다:

  1. XML 파일 구조 확인: DataBinding을 사용하려면 XML 파일의 루트가 <layout> 태그로 감싸져 있는지 확인하세요. <layout> 태그 안에 기존의 루트 뷰(예: ConstraintLayout)가 포함되어야 합니다.

  2. 빌드 설정 확인: build.gradle 파일에서 DataBinding이 제대로 활성화되어 있는지 확인하세요. 다음과 같이 설정되어 있어야 합니다.

    android {
        ...
        buildFeatures {
            dataBinding = true
        }
    }
    
  3. 패키지 및 경로 확인: 에러 메시지를 통해 오류가 발생하는 위치를 정확히 파악하세요. 자주 발생하는 문제는 패키지 경로의 누락이나 잘못된 설정에 기인합니다. 질문에 제공하신 GitHub 링크의 파일 구조를 다시 한 번 확인하시기 바랍니다.

  4. 코틀린 코드를 통한 바인딩: Activity에서 바인딩 객체를 초기화할 때 DataBindingUtil을 사용하고 있는지 확인하세요. 예를 들어:

    private lateinit var binding: ActivityMainBinding
    
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
    }
    

    위의 코드처럼 바인딩을 초기화해야 합니다.

  5. 로그 분석: 안드로이드 스튜디오의 Logcat 정보를 더 상세히 확인해서 오류가 어떤 파일 및 코드 라인에서 발생하는지 살펴보세요.

데이터바인딩 설정 이후의 에러와 관련하여 기존 질문 databinding에러를 참고하시면 도움이 될 수 있습니다. 추가적인 도움이 필요하시면 다시 문의해주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김황석님의 프로필 이미지
김황석

작성한 질문수

질문하기