2017-02-10 60 views
0

我爲Android項目實現了一個.aar庫,它提供了一些動畫等速度指示器。該庫被稱爲「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)

正如你看到的,唯一不同的是在包名和類前面的單詞「匿名」。

我已經嘗試了很多方法來解決這個問題,但不成功。必須有一些非常簡單的方法來解決這個問題,因爲某種原因逃脫了我。我很感激任何意見。

謝謝!

編輯:我想我已經解決了這個:

我認爲我設法解決此問題:名字應該是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' vs'SpeedometerView' – 0xDEADC0DE

回答

2

看來你實例化一個SpeedometerGauge,而不是一個SpeedometerView,所以你應該

更換

speedometer.setLabelConverter(new SpeedometerView.LabelConverter() { 

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

是的,所以教程是錯誤的。現在它可以工作。 –