Seltsames Verhalten mit dem ternären Java-Operator unter Android

8

Ich weiß nicht warum, aber ich bekomme diesen seltsamen Fehler, wenn ich in diesem Beispiel einen ternären Operator verwende:

Ich denke, es hängt mit der Art und Weise zusammen, wie Java das Ergebnis vom Operator ausgibt, aber nur in bestimmten Fällen.

Danke für jede Erklärung.

Hinweis: Ich habe nach einem gesucht, konnte aber nur NPE-bezogene Antworten finden.

-Bearbeiten -

Die App verwendet:

  • compileSdkVersion 23
  • buildToolsVersion '23 .0.2 '
  • minSdkVersion 14
  • targetSdkVersion 23
  • Android Support-Bibliothek 23.2.0

Der Test wurde mit Android Studio 2.0 Beta 5 mit der entsprechenden Google-Version

durchgeführt     
LucasFM 25.02.2016, 16:47
quelle

2 Antworten

11

Der Grund ist wegen der Art, wie ternäre Operatoren arbeiten.

Es werden immer beide Objekte auf den nächsten Super-Typ angewendet, der beiden Objekten gemeinsam ist. In Ihrem Fall ist es BaseInterpolator , weil Ihre targetSDK-Version auf 23 gesetzt ist.

Da Ihre MinSDK jedoch 14 ist, funktioniert die Umwandlung nicht auf allen Geräten. Daher der Fehler.

Um das Problem zu beheben, können Sie beiden Objekten eine explizite Umwandlung von TimeInterpolator hinzufügen.

    
Codebender 25.02.2016, 17:08
quelle
0

Ich behebe das mit Code folgen:

%Vor%     
Jalon Ray 14.07.2017 06:27
quelle

Tags und Links