首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到'android.graphics.drawable.RippleDrawable‘类

找不到'android.graphics.drawable.RippleDrawable‘类
EN

Stack Overflow用户
提问于 2016-05-09 05:57:34
回答 2查看 36.6K关注 0票数 8

我使用的是第三方库,有一种使用DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);的方法。当我在android 5.0+上测试我的应用程序时,没有问题,当使用Android4.4.4的时候,它运行了well.But,它抛出了一个例外:

代码语言:javascript
复制
    05-09 13:15:15.030 26447-26447/com.wizchen.athit E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.wizchen.athit, PID: 26447
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wizchen.athit/com.wizchen.athit.view.activity.MainActivity}: java.lang.NullPointerException
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2320)
   at android.app.ActivityThread.access$800(ActivityThread.java:138)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:136)
   at android.app.ActivityThread.main(ActivityThread.java:5117)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
   at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
   at android.support.v4.graphics.drawable.DrawableWrapperDonut.setCompatTintMode(DrawableWrapperDonut.java:278)
   at android.support.v4.graphics.drawable.DrawableCompatBase.setTintMode(DrawableCompatBase.java:48)
   at android.support.v4.graphics.drawable.DrawableCompat$BaseDrawableImpl.setTintMode(DrawableCompat.java:99)
   at android.support.v4.graphics.drawable.DrawableCompat.setTintMode(DrawableCompat.java:400)
   at com.wizchen.athit.lib.AppThemeEngine.util.TintHelper.createTintedDrawable(TintHelper.java:359)
   at com.wizchen.athit.lib.AppThemeEngine.viewprocessors.ToolbarProcessor.process(ToolbarProcessor.java:117)
   at com.wizchen.athit.lib.AppThemeEngine.viewprocessors.ToolbarProcessor.process(ToolbarProcessor.java:44)
   at com.wizchen.athit.lib.AppThemeEngine.ATE.postApply(ATE.java:209)
   at com.wizchen.athit.lib.AppThemeEngine.ATEActivity.onStart(ATEActivity.java:60)
   at com.wizchen.athit.view.activity.MainActivity.onStart(MainActivity.java:68)
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1183)
   at android.app.Activity.performStart(Activity.java:5359)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2244)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2320) 
   at android.app.ActivityThread.access$800(ActivityThread.java:138) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:136) 
   at android.app.ActivityThread.main(ActivityThread.java:5117) 
   at java.lang.reflect.Method.invokeNative(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:515) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
   at dalvik.system.NativeStart.main(Native Method) 

除了上面的堆栈跟踪之外,我在控制台中看到了一些错误信息,如下所示:

代码语言:javascript
复制
05-09 13:15:15.030 26447-26447/com.wizchen.athit E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method com.wizchen.athit.lib.AppThemeEngine.util.TintHelper.setTintAuto

而这个:

代码语言:javascript
复制
05-09 13:15:15.030 26447-26447/com.wizchen.athit E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method com.wizchen.athit.lib.AppThemeEngine.util.TintHelper.setTintSelector

当然,我已经在我的项目中编译了v4支持库:)

谁遇到了这个问题?谢谢你帮忙!

------------------------------------------------------------------------------------------

更新1: --这就是导致NullPointerException的原因:

代码语言:javascript
复制
    @CheckResult
    @Nullable
    public static Drawable createTintedDrawable(@Nullable Drawable drawable, @ColorInt int color) {
        if (drawable == null) return null;
        drawable = DrawableCompat.wrap(drawable.mutate());
        DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
        DrawableCompat.setTint(drawable, color);
        return drawable;
    }
EN

回答 2

Stack Overflow用户

发布于 2016-05-09 06:10:19

请阅读以下内容:

如果您查看DrawableCompat的源代码,您将看到任何版本的< support library 21 这种方法一事无成。

DrawableCompat的想法似乎根本没有在旧版本上崩溃,而不是实际上提供了该功能。

UseFul提示:

使用support library 22.1,您可以使用DrawableCompat对可绘图进行着色。

DrawableCompat.wrap(可绘制)和setTint()、setTintList()和setTintMode()将只起作用:不需要创建和维护单独的绘图,只需要支持多种颜色!

票数 5
EN

Stack Overflow用户

发布于 2018-01-29 11:56:57

在我的项目中,我使用了“颜色主体”来创建按钮背景和它的sake错误,并且我将“颜色主体”更改为@color/color project及其为我做的工作:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37108618

复制
相关文章

相似问题

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