web-dev-qa-db-fra.com

java.lang.UnsupportedOperationException: impossible de convertir la valeur à l'index 5 en couleur: type = 0x5

Mon application se bloque après la mise à jour vers Android Studio 3 RC1 (Gradle 4, Android Gradle plugin 3 RC2).

This is the error I am having:
Java.lang.RuntimeException: Unable to start activity ComponentInfo{*****}:
Android.view.InflateException: Binary XML file line #0: Binary XML file line #0:
Error inflating class com.viewpagerindicator.CirclePageIndicator
       at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2817)
       at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2892)
       at Android.app.ActivityThread.-wrap11(Unknown Source:0)
       at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1593)
       at Android.os.Handler.dispatchMessage(Handler.Java:105)
       at Android.os.Looper.loop(Looper.Java:164)
       at Android.app.ActivityThread.main(ActivityThread.Java:6541)
       at Java.lang.reflect.Method.invoke(Native Method)
       at com.Android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.Java:240)
       at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:767)
    Caused by: Android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class com.viewpagerindicator.CirclePageIndicator
    Caused by: Android.view.InflateException: Binary XML file line #0: Error inflating class com.viewpagerindicator.CirclePageIndicator
    Caused by: Java.lang.reflect.InvocationTargetException
       at Java.lang.reflect.Constructor.newInstance0(Native Method)
       at Java.lang.reflect.Constructor.newInstance(Constructor.Java:334)
       at Android.view.LayoutInflater.createView(LayoutInflater.Java:647)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(CalligraphyLayoutInflater.Java:211)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(CalligraphyLayoutInflater.Java:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(CalligraphyLayoutInflater.Java:302)
       at Android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.Java:186)
       at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:780)
       at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:730)
       at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:863)
       at Android.view.LayoutInflater.rInflateChildren(LayoutInflater.Java:824)
       at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:866)
       at Android.view.LayoutInflater.rInflateChildren(LayoutInflater.Java:824)
       at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:866)
       at Android.view.LayoutInflater.rInflateChildren(LayoutInflater.Java:824)
       at Android.view.LayoutInflater.inflate(LayoutInflater.Java:515)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.Java:60)
       at Android.view.LayoutInflater.inflate(LayoutInflater.Java:423)
       at Android.view.LayoutInflater.inflate(LayoutInflater.Java:374)
       at Android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.Java:287)
       at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:139)
       at com.raimbekov.Android.sajde.zikr.ZikrActivity.onCreate(ZikrActivity.Java:195)
       at Android.app.Activity.performCreate(Activity.Java:6975)
       at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1213)
       at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2770)
       at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2892)
       at Android.app.ActivityThread.-wrap11(Unknown Source:0)
       at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1593)
       at Android.os.Handler.dispatchMessage(Handler.Java:105)
       at Android.os.Looper.loop(Looper.Java:164)
       at Android.app.ActivityThread.main(ActivityThread.Java:6541)
       at Java.lang.reflect.Method.invoke(Native Method)
       at com.Android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.Java:240)
       at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:767)
    Caused by: Java.lang.UnsupportedOperationException: Can't convert value at index 5 to color: type=0x5
    10-20 10:48:09.562 6156-6156 E/AndroidRuntime:     at Android.content.res.TypedArray.getColor(TypedArray.Java:473)
        at com.viewpagerindicator.CirclePageIndicator.<init>(CirclePageIndicator.Java:96)
        at com.viewpagerindicator.CirclePageIndicator.<init>(CirclePageIndicator.Java:72)
            ... 34 more

Je n'ai pas eu ce problème avant la mise à jour (le Android Studio 2). Il est également décrit sur github , mais pas de réponse.

22

Changement
compile 'com.viewpagerindicator:library:2.4.1@aar'

à
compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'

Ça va marcher. Il y a un problème avec la bibliothèque.

27
Abhilash Das

Mon projet utilise Android gradle plugin 3.0 et compileSdk 27. Je n'ai pas pu le faire fonctionner avec cette configuration en utilisant les solutions suggérées (compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1') dans ce fil.

Il se plaignait de méthodes comme ViewPager#removeOnPageChangeListener inexistant qui a été ajouté dans la version 24 de la bibliothèque de support. Je pense que cela a à voir avec le fait que la bibliothèque dispose d'Android-support-v4.jar directement intégré.

Je ne voulais pas parcourir tous mes fichiers xml et définir les attributs par programme, j'ai donc fini par créer un fork qui utilise gradle pour construire la bibliothèque et transfère compileSdk/minSdk/support-v4 vers des versions plus modernes.

Vous pouvez trouver le projet ici https://github.com/splatte/ViewPagerIndicator

Pour l'utiliser dans votre projet, obtenez-le de jitpack comme ceci:

allprojects {
    repositories {
      maven { url "https://jitpack.io" }
    }
}

puis:

dependencies {
    implementation 'com.github.splatte:ViewPagerIndicator:3.0.0'
}

(Il doit y avoir un autre projet qui fait cela dans la mer de 4.300 fourches que ViewPagerIndicator a, mais je ne savais pas comment le trouver.)

7
splatte

compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1' en utilisant jitpack.io ne fonctionnait pas pour moi avec le Android plugin gradle 3.0.

Au lieu de cela, j'ai dû définir par programme tous les attributs de vue que j'avais précédemment définis dans la disposition xml avec cpi: (ou app:) les attributs.

Exemple

<com.viewpagerindicator.CirclePageIndicator
    cpi:fillColor="@color/Azure"
    cpi:pageColor="@color/white"
    cpi:radius="4dp"
    cpi:snap="true"
    cpi:strokeWidth="0dp" />

J'ai supprimé tous les cpi: attributs et définissez-les tous par programme:

circlePageIndicator.setFillColor(ContextCompat.getColor(getContext(), R.color.Azure));
circlePageIndicator.setPageColor(ContextCompat.getColor(getContext(), R.color.white));
circlePageIndicator.setRadius((int) (4 * Resources.getSystem().getDisplayMetrics().density));
circlePageIndicator.setSnap(true);
circlePageIndicator.setStrokeWidth(0);
6
Lorenzo Polidori

J'ai trouvé le jitpack.io la méthode la plus simple:

allprojects {
    repositories {
      maven { url "https://jitpack.io" }
    }
}

puis:

dependencies {
  implementation ('com.github.JakeWharton:ViewPagerIndicator:2.4.1'){
    exclude module: 'support-v4'
  }
}

Juste pour noter que le fait d'avoir deux versions de la bibliothèque support-v4 l'a cassée jusqu'à ce que j'en exclue une.

4
eatyourpeas