J'essaie de suivre le Le MDC Codelab sur codelabs.developers.google.com avec les dernières versions de la bibliothèque . Le EditText -Android.support.design.widget.TextInputEditText
semble fonctionner comme prévu, mais sous Android.support .design.button.MaterialButton une exception d'exécution InflateException est levée.
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)
EDIT: Ajout de plus de détails à stacktrace et a compris que le problème tenait au fait que le thème de l'application devait être hérité de Theme.MaterialComponents.
Assurez-vous que le style de thème d'application est hérité de Theme.MaterialComponents
.
Exemple:
<style name="XXXXXXAppTheme" parent="@style/Theme.MaterialComponents.Light.DarkActionBar">
Outre l'ajout de Theme.MaterialComponents
1) vous pouvez également ajouter Theme.MaterialComponents.Bridge si vous souhaitez uniquement obtenir des attributs et non un style par défaut
2) Ajoutez les bibliothèques androidx et com.google.Android.material au lieu de modifier les thèmes.
Plus d'informations peuvent être trouvées (5) Les composants de la conception matérielle (Android Dev Summit '18) - YouTube à 3:25 min