android.support.design.button.MaterialButton 抛出 InflateException

标签 android android-gradle-plugin material-design android-design-library

我正在尝试关注 The MDC Codelab on codelabs.developers.google.com使用最新的库版本。 EditText -android.support.design.widget.TextInputEditText 似乎按预期工作,但是在使用 android.support.design.button.MaterialButton 时会引发运行时 InflateException。

Gradle 配置:

compileSdkVersion 28

minSdkVersion 21

targetSdkVersion 28

dependencies {
   def lifecycle_version = "1.1.1"
   def nav_version = "1.0.0-alpha05"
   def work_version = "1.0.0-alpha06"
   def supportLibraryVersion = "28.0.0-rc01"

   implementation fileTree(include: ['*.jar'], dir: 'libs')
   api "android.arch.lifecycle:extensions:$lifecycle_version"
   api "android.arch.lifecycle:common-java8:$lifecycle_version"
   api "android.arch.navigation:navigation-fragment:$nav_version"
   api "android.arch.navigation:navigation-ui:$nav_version"
   api "android.arch.work:work-runtime:$work_version"

   api ("com.android.support:appcompat-v7:$supportLibraryVersion", {
       exclude group: 'com.android.support', module: 'support-media-compat'
   })
   api ("com.android.support:design:$supportLibraryVersion", {
       exclude group: 'com.android.support', module: 'support-media-compat'
   })
   api ("com.android.support:cardview-v7:$supportLibraryVersion", {
       exclude group: 'com.android.support', module: 'support-media-compat'
   })
   api ("com.android.support:customtabs:$supportLibraryVersion", {
       exclude group: 'com.android.support', module: 'support-media-compat'
   })

...

堆栈跟踪

    E/XXXXXXApp: Unhandled Exception - Application Crash
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.XXXXXX/com.XXXXXX.activities.XXXXXXActivity}: android.view.InflateException: Binary XML file line #84: Binary XML file line #84: Error inflating class android.support.design.button.MaterialButton
    at com.XXXXXXActivity.onCreate(LoginActivity.java:107)
...

 Caused by: java.lang.IllegalArgumentException: This component requires that you specify a valid TextAppearance attribute. Update your app theme to inherit from Theme.MaterialComponents (or a descendant).
                 at android.support.design.internal.ThemeEnforcement.checkTextAppearance(ThemeEnforcement.java:170)
                 at android.support.design.internal.ThemeEnforcement.obtainStyledAttributes(ThemeEnforcement.java:75)
                 at android.support.design.button.MaterialButton.<init>(MaterialButton.java:140)
                 at android.support.design.button.MaterialButton.<init>(MaterialButton.java:133)

编辑: 向堆栈跟踪添加了更多详细信息,并发现问题与 App Theme 需要从 Theme.MaterialComponents 继承这一事实有关。

最佳答案

确保 App Theme 样式继承自 Theme.MaterialComponents

例子:

<style name="XXXXXAppTheme" parent="@style/Theme.MaterialComponents.Light.DarkActionBar"> 

关于android.support.design.button.MaterialButton 抛出 InflateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51841451/

相关文章:

android - 从 URL 加载图像到 imageView 以及缓存

android - Bottom Sheet 内的 RecyclerView 不工作

android - 为什么在添加新位置sdk时会出错AdvertisingIdClient错误

java - 管理 Android Gradle 依赖项的最佳方式

reactjs - Material UI BottomNavigation 默认情况下不具有粘性

Android 读取 USB 游戏 handle

java - 如何优雅地检查原始资源是否不存在?

android - java.lang.NoClassDefFoundError : Failed resolution of: Lorg/jacoco/agent/rt/internal_14f7ee5/Offline 错误

android - 如何在 Activity 转换的共享元素上实现放大动画

android - 如何在特定 Activity 中设置横向?