Android-aChartEngine getCurrentSeriesAndPoint()不适用于断开连接的图形
我正在使用aChartEngine和windspeed(windspeed是使用左y轴的时间序列,winddir是使用右y轴的xyseries)在时间图表视图中将风向绘制为xyseries 我面临的问题是,随着风向向北移动,我的值在0和360之间移动,在我的图形中创建了一条丑陋的垂直线。我更希望,如果值增加到360以上,图形将被剪裁并恢复到0。通过过滤这些值并在我的XYSeries中插入MathHelper.NULL_值(请参见代码),我成功地获得了我想要的图形Android-aChartEngine getCurrentSeriesAndPoint()不适用于断开连接的图形,android,graph,achartengine,Android,Graph,Achartengine,我正在使用aChartEngine和windspeed(windspeed是使用左y轴的时间序列,winddir是使用右y轴的xyseries)在时间图表视图中将风向绘制为xyseries 我面临的问题是,随着风向向北移动,我的值在0和360之间移动,在我的图形中创建了一条丑陋的垂直线。我更希望,如果值增加到360以上,图形将被剪裁并恢复到0。通过过滤这些值并在我的XYSeries中插入MathHelper.NULL_值(请参见代码),我成功地获得了我想要的图形 double windDirT
double windDirTemp=0;
现在的问题是我的OnClickListener不再工作了。应用程序在服务器上崩溃
SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
我假设将空值插入到我的系列中会使getCurrentSeriesAndPoint无法获取SeriesIndex,并且可能与图形不再连接有关
如果有人能帮我解决这个问题,我将不胜感激。我可以用不同的方式过滤这些值吗?我可以试试getCurrentSeriesAndPoint()的替代方法吗
谢谢,
基督教徒
编辑:
我正在使用achartengine-1.1.0-rc2
我的OneClickListener:
/**
* Setting a click event listener for the graph
*/
mChart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Format formatter = new SimpleDateFormat("HH:mm");
SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
if (seriesSelection != null) {
int seriesIndex = seriesSelection.getSeriesIndex();
String selectedSeries = "Vindhastighet";
String unit = " m/s";
if (seriesIndex == 0)
selectedSeries = "Vindhastigheten";
else if (seriesIndex == 1)
selectedSeries = "Vindkast";
else {
selectedSeries = "Vindretningen";
unit = "\u00B0";
}
// Getting the clicked Date ( x value )
long clickedDateSeconds = (long) seriesSelection
.getXValue();
Date clickedDate = new Date(clickedDateSeconds);
String strDate = formatter.format(clickedDate);
// Getting the y value
int amount = (int) seriesSelection.getValue();
// Displaying Toast Message
Toast.makeText(
getBaseContext(),
selectedSeries + " kl " + strDate + " var "
+ amount + unit, Toast.LENGTH_LONG)
.show();
}
}
});
我的日志:
04-02 16:05:18.575:E/AndroidRuntime(29182):致命异常:主
04-02 16:05:18.575:E/AndroidRuntime(29182):java.lang.NullPointerException
04-02 16:05:18.575:E/AndroidRuntime(29182):位于org.achartengine.chart.XYChart.getseriesandpointforscreencoordination(XYChart.java:845)
04-02 16:05:18.575:E/AndroidRuntime(29182):位于org.achartengine.GraphicalView.getCurrentSeriesAndPoint(GraphicalView.java:137)
04-02 16:05:18.575:E/AndroidRuntime(29182):在com.example.hellogogleMaps.WindChartActivity$1.onClick(WindChartActivity.java:116)
04-02 16:05:18.575:E/AndroidRuntime(29182):在android.view.view.performClick(view.java:4211)
04-02 16:05:18.575:E/AndroidRuntime(29182):在android.view.view$PerformClick.run(view.java:17267)
04-02 16:05:18.575:E/AndroidRuntime(29182):在android.os.Handler.handleCallback(Handler.java:615)上
04-02 16:05:18.575:E/AndroidRuntime(29182):在android.os.Handler.dispatchMessage(Handler.java:92)上
04-02 16:05:18.575:E/AndroidRuntime(29182):在android.os.Looper.loop(Looper.java:137)
04-02 16:05:18.575:E/AndroidRuntime(29182):位于android.app.ActivityThread.main(ActivityThread.java:4898)
04-02 16:05:18.575:E/AndroidRuntime(29182):位于java.lang.reflect.Method.Invokenactive(本机方法)
04-02 16:05:18.575:E/AndroidRuntime(29182):位于java.lang.reflect.Method.invoke(Method.java:511)
04-02 16:05:18.575:E/AndroidRuntime(29182):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
04-02 16:05:18.575:E/AndroidRuntime(29182):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
04-02 16:05:18.575:E/AndroidRuntime(29182):在dalvik.system.NativeStart.main(本机方法)
这是AChartEngine中的一个bug,现已修复。您可以下载包含此修复程序的版本。也许向我们展示您的
OnClickListener
'代码和stacktrace会有帮助吗?我建议您更新到最新版本:@Dan:谢谢最新版本:)您做得很好!但是问题仍然存在,我的logcat报告了相同的错误…请发布一个小示例,我可以用它来复制问题。如果有bug,我会修复它,但我需要一个复制它的测试用例。@Dan我已经检查确认如果我用例如double[]visions={2000,2500,MathHelper.NULL_VALUE,2100,2800}交换这些值;双[]视图={2200270029028003200};应用程序崩溃,并出现相同的错误报告。我需要设置multiRenderer.setYAxisMin(0);多渲染器.setYAxisMax(4000);查看数据。效果很好:)非常感谢!我的代码中仍然存在这个问题。它似乎在某些方面起作用,而在其他方面则不起作用。它是否可能不适用于图形的插值部分?谢谢。你好@Dan我有这个类型的值。双[]X={1,2,3,4,5};double[]Y={2200,MathHelper.NULL_值,2900,MathHelper.NULL_值,3200};所以在这里我想画一条线,但跳过空值,在需要间隙的地方画一条线,在这个值之间画一条线,我该怎么做?
/**
* Setting a click event listener for the graph
*/
mChart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Format formatter = new SimpleDateFormat("HH:mm");
SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
if (seriesSelection != null) {
int seriesIndex = seriesSelection.getSeriesIndex();
String selectedSeries = "Vindhastighet";
String unit = " m/s";
if (seriesIndex == 0)
selectedSeries = "Vindhastigheten";
else if (seriesIndex == 1)
selectedSeries = "Vindkast";
else {
selectedSeries = "Vindretningen";
unit = "\u00B0";
}
// Getting the clicked Date ( x value )
long clickedDateSeconds = (long) seriesSelection
.getXValue();
Date clickedDate = new Date(clickedDateSeconds);
String strDate = formatter.format(clickedDate);
// Getting the y value
int amount = (int) seriesSelection.getValue();
// Displaying Toast Message
Toast.makeText(
getBaseContext(),
selectedSeries + " kl " + strDate + " var "
+ amount + unit, Toast.LENGTH_LONG)
.show();
}
}
});