2017-02-10 3 views
0

Ich habe eine .aar-Bibliothek für mein Android-Projekt implementiert, die einige Geschwindigkeitsindikatoren bereitstellt, die animiert sind und so weiter. Die Bibliothek heißt "SpeedometerView-1.0.1.aar"Interface kann nicht in Android instanziiert werden, "anonymer" Fehler

Alles funktioniert gut und es macht seine Arbeit. Ich versuche jedoch, ein Etikett für meine Geschwindigkeitsmesser zu implementieren. Ich habe die Dokumentation für diese Bibliothek verwendet. Ein einfaches Beispiel ist hier zu finden:

https://github.com/ntoskrnl/AndroidWidgets

Hier ist der Code im Tutorial Beispiel:

Nutzungs

Importieren Sie die Bibliothek zu einem Projekt.

In Ihrem Layout XML-Datei SpeedometerGauge hinzufügen, wie gezeigt:

<com.cardiomood.android.controls.gauge.SpeedometerGauge 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:padding="8dp" 
    android:id="@+id/speedometer" /> 

konfigurieren SpeedometerGauge:

private SpeedometerGauge speedometer; 

    // Customize SpeedometerGauge 
    speedometer = (SpeedometerGauge) v.findViewById(R.id.speedometer); 

    // Add label converter 
    speedometer.setLabelConverter(new SpeedometerView.LabelConverter() { 
     @Override 
     public String getLabelFor(double progress, double maxProgress) { 
      return String.valueOf((int) Math.round(progress)); 
     } 
    }); 

    // configure value range and ticks 
    speedometer.setMaxSpeed(300); 
    speedometer.setMajorTickStep(30); 
    speedometer.setMinorTicks(2); 

    // Configure value range colors 
    speedometer.addColoredRange(30, 140, Color.GREEN); 
    speedometer.addColoredRange(140, 180, Color.YELLOW); 
    speedometer.addColoredRange(180, 400, Color.RED); 

mit der "Konverter hinzufügen Bezeichnung" Mein Problem ist.

Wenn ich versuche, dass in meinem Code zu verwenden, erhalte ich diese Fehlermeldung:

setLabelConverter (com.cardiomood.android.controls.gauge.SpeedometerGauge.LabelConverter) in SpeedometerGauge cannot be applied to (anonymous com.cardiomood.android.speedometer.SpeedometerView.LabelConverter)

Hier ist, wie mein entsprechenden Code wie folgt aussieht:

private void setCoolingIndicatorAttributes() { 
     coolingIndicator.setMaxSpeed(250); 
     coolingIndicator.setMajorTickStep(50); 
     coolingIndicator.setMinorTicks(3); 
     coolingIndicator.addColoredRange(0, 140, Color.GREEN); 
     coolingIndicator.addColoredRange(140, 200, Color.YELLOW); 
     coolingIndicator.addColoredRange(200, 250, Color.RED); 
//   Add label converter 
     coolingIndicator.setLabelConverter(new SpeedometerView.LabelConverter() { 
      @Override 
      public String getLabelFor(double progress, double maxProgress) { 
       return String.valueOf((int) Math.round(progress)); 
      } 
     }); 
    } 

Auch dies ^^^ nicht der Fall ist Arbeit. Ich erhalte die Störung, die ich beschrieben:

setLabelConverter (com.cardiomood.android.controls.gauge.SpeedometerGauge.LabelConverter) in SpeedometerGauge cannot be applied to (anonymous com.cardiomood.android.speedometer.SpeedometerView.LabelConverter)

Wie Sie sehen können, ist der einzige Unterschied ist, das Wort „anonym“ vor dem Paketnamen und Klasse.

Ich habe versucht, eine Reihe von Ansätzen zu lösen, aber war nicht erfolgreich. Es muss eine sehr einfache Lösung geben, die mir aus irgendeinem Grund entgeht. Ich schätze jede Eingabe.

Danke!

EDIT: Ich glaube, ich habe dieses Problem gelöst:

Ich glaube, ich dieses Problem zu beheben verwaltet: der Name SpeedometerGauge sein sollte, nicht SpeedometerView.

So ist der richtige Code ist:

//   Add label converter 
     coolingIndicator.setLabelConverter(new SpeedometerGauge.LabelConverter() { 
      @Override 
      public String getLabelFor(double progress, double maxProgress) { 
       return String.valueOf((int) Math.round(progress)); 
      } 
     }); 
    } 
+1

'der einzige Unterschied ist das Wort "anonym". Nein, der Unterschied liegt auch in den Paketnamen: 'SpeedometerGauge' vs.' SpeedometerView' – 0xDEADC0DE

Antwort

2

Es scheint, dass Sie ein SpeedometerGauge und kein SpeedometerView sind instanziiert wird, so sollten Sie

speedometer.setLabelConverter(new SpeedometerView.LabelConverter() { 

von

ersetzen
speedometer.setLabelConverter(new SpeedometerGauge.LabelConverter() { 
+0

Ja, das Tutorial war also falsch. Jetzt funktioniert es. –

Verwandte Themen