2017-02-10 10 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'対' SpeedometerView' – 0xDEADC0DE

答えて

2

あなたがSpeedometerGaugeをインスタンス化していないSpeedometerViewので、あなたは

によって

speedometer.setLabelConverter(new SpeedometerView.LabelConverter() { 

を交換する必要がありますしているようです

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

はい、チュートリアルが間違っていました。今それは動作します。 –

関連する問題