J'ai implémenté une bibliothèque .aar pour mon projet Android qui fournit des indicateurs de vitesse animés, etc. La bibliothèque s'appelle "SpeedometerView-1.0.1.aar"Impossible d'instancier l'interface dans Android, erreur "anonyme"
Tout fonctionne bien et fait son travail. Cependant, j'essaie de mettre en place un label pour mes speedomètres. J'ai utilisé la documentation trouvée pour cette bibliothèque. Un exemple de base se trouve ici:
https://github.com/ntoskrnl/AndroidWidgets
Voici le code dans l'exemple tutoriel:
Utilisation
importer la bibliothèque à votre projet.
Dans votre fichier XML de mise en page ajoutez SpeedometerGauge comme indiqué:
<com.cardiomood.android.controls.gauge.SpeedometerGauge
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="8dp"
android:id="@+id/speedometer" />
Configurer 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);
Mon problème est avec le "Ajouter convertisseur d'étiquettes".
Lorsque je tente d'utiliser dans mon code, je reçois cette erreur:
setLabelConverter (com.cardiomood.android.controls.gauge.SpeedometerGauge.LabelConverter) in SpeedometerGauge cannot be applied to (anonymous com.cardiomood.android.speedometer.SpeedometerView.LabelConverter)
Voici comment mon code correspondant ressemble à:
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));
}
});
}
Encore une fois, ce ne ^^^ travail. Je reçois l'erreur je l'ai décrit:
setLabelConverter (com.cardiomood.android.controls.gauge.SpeedometerGauge.LabelConverter) in SpeedometerGauge cannot be applied to (anonymous com.cardiomood.android.speedometer.SpeedometerView.LabelConverter)
Comme vous pouvez le voir, la seule différence est le mot « anonyme » devant le nom du package et la classe.
J'ai essayé pas mal d'approches pour résoudre ce problème, mais je n'ai pas réussi. Il doit y avoir un moyen très facile de résoudre ce problème qui, pour une raison quelconque, m'échappe. J'apprécie toute contribution.
Merci!
EDIT: Je pense que je l'ai résolu ce problème:
Je pense que je réussi à résoudre ce: le nom doit être SpeedometerGauge, pas SpeedometerView.
donc le bon code est:
// Add label converter
coolingIndicator.setLabelConverter(new SpeedometerGauge.LabelConverter() {
@Override
public String getLabelFor(double progress, double maxProgress) {
return String.valueOf((int) Math.round(progress));
}
});
}
'la seule différence est le mot "anonyme". Non, la différence est aussi dans les noms de paquets: 'SpeedometerGauge' vs' SpeedometerView' – 0xDEADC0DE