web-dev-qa-db-fra.com

Impossible de rendre MaterialButton avec Android.material: 1.1.x

Chaque fois que j'utilise MaterialButton, j'obtiens l'exception suivante dans l'aperçu xml:

Java.lang.IllegalArgumentException: Java.lang.ClassCastException

J'ai mis à niveau vers Android studio 3.4 et vers com.google.Android.material: matériel: 1.1.0-alpha05

La version 1.0.0 fonctionne mais aucune 1.1.x ne fonctionne.

Est-ce un problème avec le IDE ou la bibliothèque?

-

Pour référence, la trace de pile complète:

Java.lang.ClassCastException@d8dc5d1
    at Sun.reflect.GeneratedMethodAccessor893.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:498)
    at Android.animation.PropertyValuesHolder_Delegate.callMethod(PropertyValuesHolder_Delegate.Java:108)
    at Android.animation.PropertyValuesHolder_Delegate.nCallFloatMethod(PropertyValuesHolder_Delegate.Java:143)
    at Android.animation.PropertyValuesHolder.nCallFloatMethod(PropertyValuesHolder.Java)
    at Android.animation.PropertyValuesHolder.access$400(PropertyValuesHolder.Java:38)
    at Android.animation.PropertyValuesHolder$FloatPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.Java:1387)
    at Android.animation.ObjectAnimator.animateValue(ObjectAnimator.Java:990)
    at Android.animation.ValueAnimator.animateBasedOnTime(ValueAnimator.Java:1339)
    at Android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.Java:1471)
    at Android.animation.ValueAnimator.pulseAnimationFrame(ValueAnimator.Java:1490)
    at Android.animation.AnimatorSet.pulseFrame(AnimatorSet.Java:1163)
    at Android.animation.AnimatorSet.handleAnimationEvents(AnimatorSet.Java:1146)
    at Android.animation.AnimatorSet.doAnimationFrame(AnimatorSet.Java:1046)
    at Android.animation.AnimationHandler.doAnimationFrame(AnimationHandler.Java:146)
    at Android.animation.AnimationHandler.access$100(AnimationHandler.Java:37)
    at Android.animation.AnimationHandler$1.doFrame(AnimationHandler.Java:54)
    at Android.view.Choreographer$CallbackRecord.run(Choreographer.Java:947)
    at Android.view.Choreographer.doCallbacks(Choreographer.Java:761)
    at Android.view.Choreographer_Delegate.doFrame(Choreographer_Delegate.Java:66)
    at com.Android.layoutlib.bridge.impl.RenderSessionImpl.renderAndBuildResult(RenderSessionImpl.Java:563)
    at com.Android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.Java:425)
    at com.Android.layoutlib.bridge.BridgeRenderSession.render(BridgeRenderSession.Java:120)
    at com.Android.ide.common.rendering.api.RenderSession.render(RenderSession.Java:151)
    at com.Android.ide.common.rendering.api.RenderSession.render(RenderSession.Java:133)
    at com.Android.tools.idea.rendering.RenderTask.lambda$null$8(RenderTask.Java:755)
    at Java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.Java:1590)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
    at Java.lang.Thread.run(Thread.Java:745)

MODIFIER Cela se produit uniquement lorsque le style de bouton n'est pas défini OR la valeur par défaut:

@ style/Widget.MaterialComponents.Button

La définition d'un style sans niveau fonctionne par exemple, donc en guise de solution, j'utilise l'espace de noms des outils pour afficher le style de bouton sans niveau.

Edit 2 le parent du thème de l'application est déjà correctement défini en tant que Theme.AppCompat.Light.DarkActionBar. Il s'agit d'un problème IDE car il fonctionne bien sur mon émulateur et mon appareil. J'ai également fait un cache clair et invalidé, nettoyer la construction, reconstruire ... (les choses standard que nous faisons face à avec bizarre IDE)

Edit Toujours pas de chance avec le dernier A.S. 3.4.1!

19
RJFares

J'ai eu le même problème, j'ai téléchargé une autre version de Android Studio.

Ça marche bien sur A.S. 3.6 Canary 3 ... J'utilise l'API 29 et la version de la matière = '1.1.0-alpha08'

Téléchargez-le ici

La dernière version de travail de mon précédent Android Studio était material_version = '1.0.0'.

Mais il n'avait pas certaines des nouvelles fonctionnalités des composants matériels, donc au lieu de revenir en arrière, j'ai décidé de mettre à jour Android Studio.

Faites ce qui convient le mieux à vos besoins.

À votre santé.

0
Doilio Matsinhe