找不到 RippleDrawable

Posted

技术标签:

【中文标题】找不到 RippleDrawable【英文标题】:Could not find RippleDrawable 【发布时间】:2015-10-07 02:02:03 【问题描述】:

我想在代码中动态创建波纹。

代码:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
      buyButton.setBackground(getPressedColorRippleDrawable(primaryColor, darkerVariant));


public static RippleDrawable getPressedColorRippleDrawable(int color, int darkerVariant) 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
        ColorStateList colorStateList = new ColorStateList(
                new int[][]
                        new int[],
                new int[]
                        darkerVariant
        );
        return new RippleDrawable(colorStateList, new ColorDrawable(color), null);
    
    return null;

这适用于 Lollipop,但会导致应用在我的 GNEX (4.3) 上崩溃。 错误:

找不到类 'android.graphics.drawable.RippleDrawable',引用自方法 Fragments.ProductDetailFragment.getPressedColorRippleDrawable

07-17 12:57:45.757 30992-30992/com.comizzo.ginsonline E/AndroidRuntime: FATAL EXCEPTION: main

java.lang.VerifyError: 片段/ProductDetailFragment

但是 RippleDrawable 从来没有在 Gnex 上使用,因为代码没有被执行。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

问题是您需要在getPressedColorRippleDrawable 中返回 Drawable 而不是 RippleDrawable。否则,在棒棒糖之前的设备上,您将收到一个 VerifyError。

【讨论】:

【参考方案2】:

该代码确实没有被执行。应用程序崩溃是因为您收到了java.lang.VerifyError。如果您使用的是 Eclipse,请尝试执行 Project → Clean;如果您使用的是 Android Studio,请尝试执行 Build → Rebuild project

【讨论】:

以上是关于找不到 RippleDrawable的主要内容,如果未能解决你的问题,请参考以下文章

java 枚举 找不到符号

bat系统找不到指定文件怎么办?

java package找不到符号

SpringBoot报找不到 dao 问题

ubuntu20.04找不到start命令

找不到名为“my”的模块。找不到名为“mycontroller”的控制器