首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >颜色:无法将索引5处的值转换为java.lang.UnsupportedOperationException: type=0x5

颜色:无法将索引5处的值转换为java.lang.UnsupportedOperationException: type=0x5
EN

Stack Overflow用户
提问于 2017-10-20 18:59:01
回答 4查看 6.5K关注 0票数 23

我的应用在更新到Android Studio 3 RC1 (Gradle 4,Android Gradle plugin3 RC2)后崩溃。

代码语言:javascript
复制
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上也有描述,但没有答案。

EN

回答 4

Stack Overflow用户

发布于 2017-10-26 17:02:24

变化

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

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

会起作用的。磁带库有问题。

票数 27
EN

Stack Overflow用户

发布于 2017-12-13 13:11:38

我的项目使用android gradle plugin3.0和compileSdk 27。我无法使用此线程中的建议解决方案(compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1')使其与此设置一起工作。

它抱怨像ViewPager#removeOnPageChangeListener这样的方法不存在,这些方法是在支持库的版本24中添加的。我认为这与库中直接内置了android-support-v4.jar有关。

我不想遍历所有的xml文件并以编程的方式设置属性,所以我最终创建了一个fork,它使用gradle来构建库,并将编译set /minSdk/support-v4升级到更新的版本。

你可以在这里找到这个项目https://github.com/splatte/ViewPagerIndicator

要在你的项目中使用它,可以像这样从jitpack获取它:

代码语言:javascript
复制
allprojects {
    repositories {
      maven { url "https://jitpack.io" }
    }
}

然后:

代码语言:javascript
复制
dependencies {
    implementation 'com.github.splatte:ViewPagerIndicator:3.0.0'
}

(在ViewPagerIndicator拥有的4.300个分支的海洋中,肯定还有另一个项目可以做到这一点,但我不知道如何找到它。)

票数 7
EN

Stack Overflow用户

发布于 2017-11-08 00:38:18

使用jitpack.iocompile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'在我的android gradle plugin3.0上不起作用。

相反,我必须以编程方式设置之前在xml布局中使用cpi: (或app:)属性设置的所有视图属性。

示例

代码语言:javascript
复制
<com.viewpagerindicator.CirclePageIndicator
    cpi:fillColor="@color/azure"
    cpi:pageColor="@color/white"
    cpi:radius="4dp"
    cpi:snap="true"
    cpi:strokeWidth="0dp" />

我删除了所有的cpi:属性,并以编程方式对它们进行了设置:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46847724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档