web-dev-qa-db-fra.com

Impossible de trouver RippleDrawable

Je veux créer une ondulation dynamiquement dans le code.

Code:

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;
}

Cela fonctionne sur Lollipop mais fait planter l'application sur mon GNEX (4.3).
Erreur:

Impossible de trouver la classe 'Android.graphics.drawable.RippleDrawable', référencée à partir des fragments de méthode.ProductDetailFragment.getPressedColorRippleDrawable

07-17 12: 57: 45.757 30992-30992/com.comizzo.ginsonline E/AndroidRuntime ﹕ EXCEPTION FATALE: principale

Java.lang.VerifyError: fragments/ProductDetailFragment

Mais RippleDrawable n'est jamais utilisé sur Gnex car le code n'est pas exécuté.

Comment puis-je réparer cela ?

11
Robby Smet

Le problème est que vous devez renvoyer un Drawable au lieu d'un RippleDrawable dans getPressedColorRippleDrawable. Sinon, sur les appareils pré-Lollipop, vous obtiendrez une VerifyError.

9
WindsurferOak

Ce code n'est en effet pas exécuté. L'application se bloque car vous recevez un Java.lang.VerifyError. Essayez d'effectuer un Project → Clean si vous utilisez Eclipse ou Build → Rebuild project si vous utilisez Android Studio.

3