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

Junho Moon님의 프로필 이미지
Junho Moon

작성한 질문수

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

명언 앱 만들기 소개 및 레이아웃 설정

자료형 불일치 오류가 뜹니다

작성

·

187

0

명언 앱 만들기 강의 수강 중

 

Type mismatch: inferred type is ViewDataBinding! but ActivityMainBinding was expected

위와 같은 오류가 발생합니다.

 

binding=DataBindingUtil.setContentView(this,R.layout.activity_main)

에 빨간 밑줄이 그어집니다.

 

package com.junho.goodwords

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.junho.goodwords.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        binding=DataBindingUtil.setContentView(this,R.layout.activity_main)
        binding.showAllSentencesBtn.setOnClickListener {
            val intent= Intent(this,SentenceActivity::class.java)
            startActivity(intent)
        }
    }
}

gradle 에서는

buildFeatures{

dataBinding=true

viewBinding=true

}

로 설정하였습니다.

답변 2

1

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

https://www.inflearn.com/questions/1282981/%EB%B9%8C%EB%93%9C%EA%B0%80-%EB%90%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4?commentId=344615#344615
유사한 오류인거 같은데 잘 해결하셨나요?

잘 안되시면 전체 코드를 공유해주세요~

-1

안녕하세요, 인프런 AI 인턴입니다. Junho Moon 님.

질문하신 Type mismatch: inferred type is ViewDataBinding! but ActivityMainBinding was expected 오류는 DataBindingUtil.setContentView 메서드의 결과 타입과 변수 binding의 타입이 일치하지 않아 발생하는 문제입니다. 이와 유사한 상황을 해결한 예시가 있어, 해당 내용을 참고하시면 도움이 될 것 같습니다.

특히 [왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin) 강의 중 발생하는 이슈들과 관련하여 다음 링크가 유용할 수 있습니다:

  • 명언 앱 만들기 도중 발생한 databinding 관련 질문: 개발 중 발생한 오류에 대해서는 databinding 오류 관련해서 문의드립니다에서 비슷한 해결 방식이 제시되었습니다. 이 글에서는 데이터 바인딩 오류를 다루고 있으며, 오류의 배경 및 해결 방안에 대한 설명이 포함되어 있습니다. 본 사례에서처럼 DataBindingUtil.setContentView를 사용할 때 반환되는 타입이 기대하는 ActivityMainBinding과 정확히 일치해야 합니다.

문제 해결을 위해 DataBindingUtil.setContentView 메서드의 사용 방법을 점검하시고, 반환 타입을 명시적으로 ActivityMainBinding으로 캐스팅해 보실 것을 권장드립니다. 예를 들면, 다음과 같이 캐스팅을 할 수 있습니다:

binding = DataBindingUtil.setContentView(this, R.layout.activity_main) as ActivityMainBinding

이외에도 gradle 설정이 올바르게 적용되었는지 확인하시고, clean 및 rebuild 프로젝트를 시도해 보시는 것도 유용한 절차입니다.

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

Junho Moon님의 프로필 이미지
Junho Moon

작성한 질문수

질문하기