하루에 0.01%라도 성장하자

Develop/Android

Android - ActivityBindingImpl error: cannot find symbol

뚠님 2021. 4. 8. 20:03
728x90
반응형

나처럼 데이터바인딩을 처음 하면 자동으로 생성되는 클래스 등에 대한 이해가 낮다

 

따라서 나도 약 20분 정도 제목과 같은 이슈로 고생했는데 사실 나는 내 실수로 그렇게 되었고...

 

어찌 되었든 정보를 공유하고자 글을 쓴다.

 

내가 다른 블로그의 글을 따라서 하다가 최종적으로 실행을 할때 겪은 에러

 

에러

 

error: cannot find symbol
import com.cleancode.android_espresso_test.databinding.ActivityMainBindingImpl

나는 ActivityMainBindingImpl 이라는 것을 생성한 적이 없는데 느닷없이 이런 에러가 발생하여 꽤나 당황하였다.

 

해당 원인을 해결하는 방법은 대표적으로 3가지가 있다.

 

1. clean Project
2. rebulid Project
3. Invalidate Caches

 

처음 검색했을 때는 캐시가 남아서 그렇다고 위 방법으로 해보라고 해서 했는데 동일한 에러 발생

 

나의 원인은 실수로 인해 발생한 원인이었다.

 

<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

        <Button
            android:id="@+id/btn_start_webview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="@{activity::btnClick}"
            android:text="Start WebView"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>

 

위 xml 파일에서 호출하는 btnClick이라는 함수를

 

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.activity = this@MainActivity

        fun btnClick(view: View) {
            Log.i("MainActivity", "btnClick")
        }
    }
}

 

위 코드와 같이 onCreate() 안에 만들어서 문제가 발생하였다.

 

따라서 xml 파일에서는 btnClick을 찾지못해서 발생한 것이다.

 

엄청나게 허무한 에러였으나, 데이터 바인딩을 처음 접하다 보니 어버버 하게 되더라... 

 

하지만 이 또한 경험이니 이렇게 기록을 남긴다.

728x90
반응형