2017-11-17 3 views
0

ich in Not bin der Vergleich zweier PorterDuffColorFilter Objekte, wenn ein ProgressBar ist die Anzeige der richtigen Farbe in einem Espresso-Testzwei PorterDuffColorFilter Vergleicht man Objekte

ich direkt die beiden Objekte zu vergleichen versucht haben, zu überprüfen, aber die folgende Methode gibt immer false:

// Creating a PorterDuffColorFilter Object 
weakOrNonePasswordColorFilter = 
      new PorterDuffColorFilter(ContextCompat.getColor(mActivityRule.getActivity(), R.color.red), PorterDuff.Mode.SRC_IN); 
... 

// Retrieving the ProgressBar ColorFilter and compare 
public boolean matchesSafely(ProgressBar progressBar, PorterDuffColorFilter colorFilter) { 
    LayerDrawable drawable = (LayerDrawable) progressBar.getProgressDrawable(); 
    Drawable progressDrawable = drawable.getDrawable(1); 
    progressDrawable.setColorFilter(colorFilter); 
    return ((PorterDuffColorFilter)progressDrawable.getColorFilter()).equals(colorFilter); 
} 

Blick in die PorterDuffColorFilter ein

ist

Methode, die mein Problem lösen sollte. Ich kann jedoch nicht auf diese Methode zugreifen. Android Studio zeigt nur die "Object" -Methoden an, und wenn ich versuche, die App mit dem zu kompilieren. getColor() wird eine Fehlermeldung angezeigt, dass die Methode nicht gefunden wurde.

Tritt dieses Problem aufgrund der Tatsache auf, dass diese Klasse in -Paket ist, wodurch es nicht zugänglich ist?

Wenn ja, wie kann ich die Farbe des ProgressBar Balkens abrufen und mit einer Farbe vergleichen?

+0

könnten Sie bitte den Code teilen, so können wir helfen? –

+0

Sie können 'PorterDuffColorFilter' erweitern aber ehrlich Ihr Problem riecht nach [XY-Problem] (http://xyproduct.info/) – pskink

+0

Wenn ja, wie kann ich in einem Espressotest testen, dass die Fortschrittsbalken die richtige Farbe haben? – Vanethos

Antwort

0

PorterDuffColorFilter überschreibt equals so sollten Sie in der Lage zu verwenden: filterA.equals(filterB)

// From PorterDuffColorFilter.java 

@Override 
public boolean equals(Object object) { 
    if (this == object) { 
     return true; 
    } 
    if (object == null || getClass() != object.getClass()) { 
     return false; 
    } 
    final PorterDuffColorFilter other = (PorterDuffColorFilter) object; 
    return (mColor == other.mColor && mMode.nativeInt == other.mMode.nativeInt); 
} 
+0

Ich habe habe das schon versucht (editiert den original post) aber leider funktioniert das nicht, da es immer false zurückgibt. – Vanethos

Verwandte Themen