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));
}
});
}
'der einzige Unterschied ist das Wort "anonym". Nein, der Unterschied liegt auch in den Paketnamen: 'SpeedometerGauge' vs.' SpeedometerView' – 0xDEADC0DE