InflateException(MaterialCardView)

Published: by

예외 발생

Dependencies에 material(com.google.android.material:material:x.x.x)을 추가하고 ViewHolder에서 MaterialCardView를 사용했으나 아래와 같은 예외(InflateException)가 발생했다.

android.view.InflateException: Binary XML file line #19: Binary XML file line #19: Error inflating class com.google.android.material.card.MaterialCardView

Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class com.google.android.material.card.MaterialCardView

Caused by: java.lang.reflect.InvocationTargetException
...
..
.

예외 발생 원인 및 해결

MaterialCardView는 material(com.google.android.material:material:x.x.x)에서 제공한다. material을 사용하려면 Material을 지원하는 테마를 사용해야한다. 필자는 Material을 제공하는 테마를 사용하지 않았다. 따라서 AndroidManifest에서 사용하는 Style의 AppTheme를 수정했다.

변경 전

AndroidManifest.xml

  <!-- Base application theme. -->
  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
  </style>
  ...
  ..
  .

변경 후

AndroidManifest.xml

  <!-- Base application theme. -->
  <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
  </style>
  ...
  ..
  .

AppTheme의 parent(부모) 테마를 변경하니 이제 잘 동작한다.