2017-02-10 59 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

是的,所以教程是错误的。现在它可以工作。 –