在 CollapsingToolbarLayout 上设置 contentscrim 颜色时出现错误

3
最近我的应用在使用CollapsingToolbarLayout的任何活动或片段时崩溃,并出现以下错误日志:
Unable to start activity ComponentInfo{com.radioafrica.music/com.radioafrica.music.activity.PlaylistTracks}: android.view.InflateException: Binary XML file line #31: Binary XML file line #31: Error inflating class android.support.design.widget.CollapsingToolbarLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Drawable;I)V in class Landroid/support/v4/graphics/drawable/DrawableCompat; or its super classes (declaration of 'android.support.v4.graphics.drawable.DrawableCompat' appears in /data/data/com.radioafrica.music/files/instant-run/dex/slice-com.android.support-support-v4-24.0.0-beta1_f8cf3ba4c70f87f407a745b9fa14a2205d0b587c-classes.dex)
at android.support.design.widget.CollapsingToolbarLayout.setStatusBarScrim(CollapsingToolbarLayout.java:663)
at android.support.design.widget

当我注释掉collapsingToolbarLayout.setStatusBarScrim(color);时,它能正常工作,但缺点是我不能设置薄纱颜色并且标题不显示在工具栏上。这是支持库的一个bug吗?

当我将我的Android Studio更新到2.1.1时,我遇到了相同的错误。不确定是否导致了这个问题。 - Shumin
@Shumin 你尝试过使用不同版本的Android Studio吗? - Alex Kombo
我更新到最新版本,但它不起作用。然后我降级到2.1.0,它仍然不起作用。我的同事的电脑可以正常工作。唯一的区别是Android Studio版本,所以我不知道原因。 - Shumin
2个回答

0
我通过检查我的build.gradle文件并删除可能具有另一个版本的v4支持库的任何依赖项,成功解决了错误。似乎是因为库的冲突版本导致了问题。

嗨,Alex,你能否提供更多细节?你切换到了v4支持库? - Shumin
不,我之前有这个库`com.kogitune:pre-lollipop-activity-transition:1.3.0',它自己也有冲突的v4支持库。当我将其删除后,一切都正常了。 - Alex Kombo
那么我们如何知道哪些库与之冲突呢? - ralphgabb

0

我遇到了同样的错误,花了很长时间查看我的依赖版本。然后我尝试删除这行代码,一切都正常工作了。但是我不明白原因,抱歉。

compile "com.android.support:support-v4:+

如果您的其他依赖项与您的应用程序默认使用的支持库版本不同(无论是更新还是更旧),则会出现冲突。 - Alex Kombo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接