Я внедрил .aar-библиотеку для моего Android-проекта, который предоставляет некоторые индикаторы скорости, которые анимируются и так далее. Библиотека называется «SpeedometerView-1.0.1.aar»Невозможно создать интерфейс в Android, анонимная ошибка
Все работает хорошо и выполняет свою работу. Тем не менее, я пытаюсь реализовать ярлык для своих спидометров. Я использовал документацию, найденную для этой библиотеки. Одним из основных примеров можно найти здесь:
https://github.com/ntoskrnl/AndroidWidgets
Вот код в учебнике, например:
Использование
Импорт библиотеки в проект.
в макете XML-файл добавить SpeedometerGauge, как показано ниже:
<com.cardiomood.android.controls.gauge.SpeedometerGauge
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="8dp"
android:id="@+id/speedometer" />
Настройка 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);
Моя проблема с "Добавить преобразователе этикетки".
Когда я пытаюсь использовать это в моем коде, я получаю эту ошибку:
setLabelConverter (com.cardiomood.android.controls.gauge.SpeedometerGauge.LabelConverter) in SpeedometerGauge cannot be applied to (anonymous com.cardiomood.android.speedometer.SpeedometerView.LabelConverter)
Вот как мой соответствующий код выглядит следующим образом:
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));
}
});
}
Опять же, это не ^^^ Работа. Я получаю ошибку, которую я описал:
setLabelConverter (com.cardiomood.android.controls.gauge.SpeedometerGauge.LabelConverter) in SpeedometerGauge cannot be applied to (anonymous com.cardiomood.android.speedometer.SpeedometerView.LabelConverter)
Как вы можете видеть, единственное различие является слово «анонимным» перед именем пакета и класса.
Я пробовал довольно много подходов, чтобы решить эту проблему, но не увенчался успехом. Должен быть какой-то очень простой способ решить эту проблему, которая почему-то ускользает от меня. Я ценю любой вклад.
Спасибо!
EDIT: Я думаю, что я решил это:
Я думаю, что мне удалось решить эту проблему: имя должно быть SpeedometerGauge, не SpeedometerView.
Так правильный код:
// Add label converter
coolingIndicator.setLabelConverter(new SpeedometerGauge.LabelConverter() {
@Override
public String getLabelFor(double progress, double maxProgress) {
return String.valueOf((int) Math.round(progress));
}
});
}
'единственная разница это слово «анонимный». Нет, разница также в именах пакетов: 'SpeedometerGauge' против' SpeedometerView' – 0xDEADC0DE