5

我正在将 scichart 集成到我的 android 项目中并面临此错误。我需要显示 ohlc 数据,因此,基于本教程https://www.scichart.com/example/android-candlestick-chart-example/我写了

val dataSeries = OhlcDataSeries(Date::class.java, Double::class.java)

那是从java代码翻译过来的

IOhlcDataSeries<Date, Double> dataSeries = new OhlcDataSeries<>(Date.class, Double.class);

我收到了这个错误

E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.qh.cointracker, PID: 5275
  java.util.NoSuchElementException: GenericClass doesn't support Class<double>
   at com.scichart.data.numerics.math.GenericMathFactory.create(GenericMathFactory.java:65)
   at com.scichart.charting.model.dataSeries.DataSeries.<init>(DataSeries.java:91)
   at com.scichart.charting.model.dataSeries.XDataSeries.<init>(XDataSeries.java:58)
   at com.scichart.charting.model.dataSeries.OhlcDataSeries.<init>(OhlcDataSeries.java:58)
   at com.scichart.charting.model.dataSeries.OhlcDataSeries.<init>(OhlcDataSeries.java:73)
   at com.qh.cointracker.activities.fragments.SymbolChartFragment.initExample(SymbolChartFragment.kt:57)
   at com.qh.cointracker.activities.fragments.SymbolChartFragment.onViewCreated(SymbolChartFragment.kt:37)

有人可以给我任何解决此错误的想法吗

谢谢你。

4

3 回答 3

8

问题是您的代码正在使用相应的原始类型。您可以改用以下定义的属性KClass

/**
 * Returns a Java [Class] instance corresponding to the given [KClass] instance.
 * In case of primitive types it returns corresponding wrapper classes.
 */
public val <T : Any> KClass<T>.javaObjectType: Class<T>

正如 KDoc 所描述的,将返回相应的包装器类型:

Double::class.javaObjectType //class java.lang.Double
于 2018-02-26T05:39:04.997 回答
3

我知道它已经回答了,但供将来参考:

在他们的公共 github 页面上有使用SciChart Android Charts 和 Kotlin的示例。在 v2.x -> Showcase 文件夹下

EcgViewModel.kt展示了如何创建和填充 XyDataSeries

StockChartViewModel.kt展示了如何创建和填充 OhlcDataSeries

于 2018-05-11T18:11:11.257 回答
0

我很确定这样做Double::class.java实际上得到了原始类型double而不是盒装类型Double。当查看堆栈跟踪并看到d. Class<double>尝试只使用Double::class

于 2018-02-26T05:11:49.257 回答