Je travaille sur une application simple avec une activité et j'utilise des fragments.Un écran avec quelques éléments. Lorsque je compile et exécute l'application, cela fonctionne bien, sauf sur Samsung Galaxy s3 et la note 4. Je ne comprends pas ce qui ne va pas dans la pile.
01-16 16:25:05.915: E/AndroidRuntime(23174): Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.MainActivity}: Android.view.InflateException: Binary XML file line #37: Error inflating class com.Android.internal.widget.ActionBarView
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2292)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2350)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.ActivityThread.access$800(ActivityThread.Java:163)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1257)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.os.Handler.dispatchMessage(Handler.Java:102)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.os.Looper.loop(Looper.Java:157)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.ActivityThread.main(ActivityThread.Java:5335)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Java.lang.reflect.Method.invokeNative(Native Method)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Java.lang.reflect.Method.invoke(Method.Java:515)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1265)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:1081)
01-16 16:25:05.915: E/AndroidRuntime(23174): at dalvik.system.NativeStart.main(Native Method)
01-16 16:25:05.915: E/AndroidRuntime(23174): Caused by: Android.view.InflateException: Binary XML file line #37: Error inflating class com.Android.internal.widget.ActionBarView
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.createView(LayoutInflater.Java:626)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:702)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:761)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:769)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:498)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:398)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:354)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.Java:3253)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.Java:3327)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:336)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.Activity.setContentView(Activity.Java:1973)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.test.MainActivity.onCreate(MainActivity.Java:28)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.Activity.performCreate(Activity.Java:5389)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2256)
01-16 16:25:05.915: E/AndroidRuntime(23174): ... 11 more
01-16 16:25:05.915: E/AndroidRuntime(23174): Caused by: Java.lang.reflect.InvocationTargetException
01-16 16:25:05.915: E/AndroidRuntime(23174): at Java.lang.reflect.Constructor.constructNative(Native Method)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Java.lang.reflect.Constructor.newInstance(Constructor.Java:423)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.createView(LayoutInflater.Java:600)
01-16 16:25:05.915: E/AndroidRuntime(23174): ... 25 more
01-16 16:25:05.915: E/AndroidRuntime(23174): Caused by: Android.view.InflateException: Binary XML file line #35: Error inflating class Android.widget.TextView
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.createView(LayoutInflater.Java:626)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.Java:56)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.onCreateView(LayoutInflater.Java:675)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:700)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:761)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:769)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:498)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:398)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.widget.ActionBarView.initTitle(ActionBarView.Java:1131)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.widget.ActionBarView.setDisplayOptions(ActionBarView.Java:947)
01-16 16:25:05.915: E/AndroidRuntime(23174): at com.Android.internal.widget.ActionBarView.<init>(ActionBarView.Java:392)
01-16 16:25:05.915: E/AndroidRuntime(23174): ... 28 more
01-16 16:25:05.915: E/AndroidRuntime(23174): Caused by: Java.lang.reflect.InvocationTargetException
01-16 16:25:05.915: E/AndroidRuntime(23174): at Java.lang.reflect.Constructor.constructNative(Native Method)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Java.lang.reflect.Constructor.newInstance(Constructor.Java:423)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.view.LayoutInflater.createView(LayoutInflater.Java:600)
01-16 16:25:05.915: E/AndroidRuntime(23174): ... 38 more
01-16 16:25:05.915: E/AndroidRuntime(23174): Caused by: Java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.content.res.TypedArray.getColor(TypedArray.Java:327)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.widget.TextView.<init>(TextView.Java:945)
01-16 16:25:05.915: E/AndroidRuntime(23174): at Android.widget.TextView.<init>(TextView.Java:863)
01-16 16:25:05.915: E/AndroidRuntime(23174): ... 41 more
Et la mise en page du fragment:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/layout"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical"
tools:context="com.locker.theme.one.MainActivity$PlaceholderFragment" >
<RelativeLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight=".14"
Android:clickable="true"
Android:gravity="center" >
<DigitalClock
Android:id="@+id/digitalClock"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:textAppearance="?android:attr/textAppearanceLarge"
Android:textColor="@Android:color/white"
Android:textSize="66sp" />
</RelativeLayout>
<RelativeLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight=".14"
Android:gravity="center" >
<ProgressBar
Android:id="@+id/progress"
style="?android:attr/progressBarStyleInverse"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:layout_gravity="center"
Android:layout_marginBottom="8dp"
Android:visibility="gone" />
<Button
Android:id="@+id/activateBtn"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="@color/material_deep_teal_200"
Android:gravity="center"
Android:layout_marginLeft="@dimen/activity_horizontal_margin"
Android:layout_marginRight="@dimen/activity_horizontal_margin"
Android:text="Test" />
</RelativeLayout>
</LinearLayout>
C'est le style que j'utilise:
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="Android:Theme.Material">
<!-- Main theme colors -->
</style>
</resources>
J'ai un peu cherché sur Google, mais je n'ai trouvé aucune idée qui puisse me dire ce qui se passe. Tous les points seraient géniaux. Je vous remercie
J'ai rencontré le même problème, causé par l'utilisation de attributes
comme référence à color
dans xml drawable
. Comme mentionné ci-dessus ici sur API <21, vous ne pouvez pas utiliser attrs à color
dans xml drawable
. Le seul moyen consiste donc à utiliser une référence à une ressource de couleur (@color/YOURS_COLOR
) ou à utiliser le format #RGB
.
Donc, si vous voulez utiliser xml drawable
avec des couleurs dépendantes du thème, vous devez créer un dessin pour chaque thème;
J'ai eu le même problème sur les appareils API 10 et cela était dû à l'utilisation de theme pour API 11+ (depuis appcompat) . Pour une solution rapide, vous pouvez trouver la déclaration suivante sur les thèmes dans styles.xml
<style name="AppBaseTheme" parent="...">
...
<style name="AppTheme" parent="...">
Et changer sur:
<style name="AppBaseTheme" parent="Android:Theme.Light">
...
<style name="AppTheme" parent="Android:Theme.Light">
Je me suis heurté à cela lors de l'utilisation d'une librairie tierce https://github.com/hoang8f/Android-flat-button après avoir mis Gradel à niveau vers 3.0.1.
Pas idéal, mais le déclassement semblait résoudre l'erreur
Cette modification nécessite la mise à jour de 2 fichiers:
Projet build.gradle avec
com.Android.tools.build:gradle:2.3.3
gradle/wrapper/gradle-wrapper.properties avec
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.Zip
Changez "AppTheme" pour ne pas utiliser de matériel. Par exemple essayez:
<style name="AppTheme" parent="Android:Theme.Holo">
</style>
J'ai eu un problème très similaire sur mon Samsung Galaxy Tab Pro 8.4 fonctionnant sous Android 4.2. Cela fonctionnait lorsque j'ai changé Styles.xml pour utiliser "Android: Theme.Holo" ou "Theme.AppCompat.Light.DarkActionBar".
Je n'ai pas pu trouver d'informations sur la raison exacte pour laquelle cela se produit et pourquoi cela ne semble affecter que les produits Samsung. Si vous voulez vraiment inclure Matériau en tant que style, vous pouvez essayer d'ajouter un autre fichier de style à utiliser avec des périphériques dotés d'une API de niveau 21 ou supérieur. Plus d'informations à ce sujet sont ici sous la section "Sélectionnez un thème en fonction de la version de la plate-forme"
Tenez-nous au courant si vous trouvez d’autres correctifs.