web-dev-qa-db-ja.com

java.lang.UnsupportedOperationException:インデックス5の値を色に変換できません:type = 0x5

Android Studio 3 RC1Gradle 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

更新前にこの問題はありませんでした(Android Studio 2で)。 github にも記載されていますが、答えはありません。

22

変化する
compile 'com.viewpagerindicator:library:2.4.1@aar'


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

動作します。ライブラリに問題があります。

27
Abhilash Das

私のプロジェクトはAndroid gradle plugin 3.0およびcompileSdk 27​​を使用しています。このスレッドで推奨ソリューション(compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1')を使用してこのセットアップで動作させることはできませんでした。

サポートライブラリのバージョン24で追加されたViewPager#removeOnPageChangeListenerなどのメソッドが存在しないという不満がありました。ライブラリにAndroid-support-v4.jarが直接焼き付けられていることに関係していると思います。

すべてのxmlファイルを調べて属性をプログラムで設定したくなかったため、最終的にgradleを使用してライブラリをビルドし、compileSdk/minSdk/support-v4をより新しいバージョンにバンプするフォークを作成しました。

ここでプロジェクトを見つけることができます https://github.com/splatte/ViewPagerIndicator

プロジェクトで使用するには、次のようにjitpackから取得します。

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

その後:

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

(ViewPagerIndicatorが持っている4.300フォークの海でこれを行う別のプロジェクトが必要ですが、見つける方法がわかりませんでした。)

7
splatte

compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'を使用したjitpack.ioは、Android gradle plugin 3.0。

代わりに、以前にcpi:(またはapp:)属性を使用してxmlレイアウトに設定したすべてのビュー属性をプログラムで設定する必要がありました。

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

すべてのcpi:属性を削除し、プログラムですべて設定しました。

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

jitpack.io最も簡単な方法:

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

その後:

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

Support-v4ライブラリの2つのバージョンがあると、そのうちの1つを除外するまで壊れてしまうことに注意してください。

4
eatyourpeas