2017-02-10 2 views
0

Я внедрил .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)); 
      } 
     }); 
    } 
+1

'единственная разница это слово «анонимный». Нет, разница также в именах пакетов: 'SpeedometerGauge' против' SpeedometerView' – 0xDEADC0DE

ответ

2

кажется, что вы инстанцировании SpeedometerGauge и не SpeedometerView, так что вы должны заменить

speedometer.setLabelConverter(new SpeedometerView.LabelConverter() { 

по

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

Да, поэтому учебник был неправильным. Теперь это работает. –

Смежные вопросы