2013-08-08 1 views
0

여러분 - aChartEngine을 사용하여 timeseries 플롯을 그릴 때 신중한 IllegalArgumentException이 발생합니다. 다음은 차트를 렌더링하기 위해 시도하는 코드는 다음과 같습니다aChartEngine cryptic IllegalArgumentException

private GraphicalView chartView; 
private XYMultipleSeriesDataset dataset; 
private XYMultipleSeriesRenderer renderers; 

dataset = new XYMultipleSeriesDataset(); 
TimeSeries series = new TimeSeries(varLongName); 
for(int i=0;i<values.size();i++) 
    series.add(quarterDates.get(i), values.get(i)); 
dataset.addSeries(series); 

renderers = new XYMultipleSeriesRenderer(); 
double YMin=0f; 
double YMax=0f; 

XYSeriesRenderer render = new XYSeriesRenderer(); 
render.setColor(Color.RED); 
render.setPointStyle(PointStyle.CIRCLE); 
render.setFillPoints(true); 
render.setLineWidth(2f); 
YMin=dataset.getSeriesAt(0).getMinY(); 
YMax=dataset.getSeriesAt(0).getMaxY(); 
renderers.addSeriesRenderer(render); 
renderers.setXTitle("Date"); 
renderers.setYTitle(varShortName); 
renderers.setAxesColor(Color.GREEN); 
renderers.setChartTitle(currentBankName+" "+varShortName+"."); 
renderers.setAxisTitleTextSize(16f); 
renderers.setYLabelsAlign(Align.RIGHT); 
renderers.setYLabelsPadding(5f); 
renderers.setLabelsTextSize(12f); 
renderers.setLegendTextSize(12f); 

Log.d(TAG,"YMin is initially set to: "+YMin); 
YMin -=5f; 
Log.d(TAG,"YMin is now set to: "+YMin); 
Log.d(TAG,"YMax is initially set to: "+YMax); 
YMax +=5f; 
Log.d(TAG,"YMax is now set to: "+YMax); 
renderers.setYAxisMin(YMin); 
Log.d(TAG, "Set YAxis Min on renderer"); 
renderers.setYAxisMax(YMax); 
Log.d(TAG, "Set YAxis Max on renderer"); 

chartView = ChartFactory.getTimeChartView(this, dataset, renderers, "dd-MMM-yyyy"); 
Log.d(TAG, "Created chartView"); 
plotArea.addView(chartView, new LayoutParams(LayoutParams.MATCH_PARENT, 250)); 

나는 디버그 메시지의 많은 문제를 지역화하지만 여전히 문제가 있어요 덧붙였다. 그것의 모습에서 볼 때 무언가가 존재하는 것처럼 보입니다. 그러나 그런 것들은 잘못된 길 위에있을 수 있습니다. 나는 또한 활동의 ​​레이아웃 파일을 포함시키고있다. 어떤 도움이 많이 주시면 감사하겠습니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:background="@drawable/background" 
tools:context=".MyPerformance" > 

<TextView 
    android:id="@+id/HelloUser" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    android:layout_marginTop="5dp" 
    android:textColor="@color/strong_black" 
    android:textSize="16sp" 
    android:textStyle="bold" 
    android:layout_marginLeft="5dp" /> 

<TextView 
    android:id="@+id/ReportForBank" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/HelloUser" 
    android:layout_alignLeft="@id/HelloUser" 
    android:text="@string/reportForBank" 
    android:layout_marginTop="10dp" 
    android:textColor="@color/strong_black" 
    android:textSize="12sp" 
    android:textStyle="bold" /> 

<Spinner 
    android:id="@+id/PerfVarSpinner" 
    android:layout_width="250dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/ReportForBank" 
    android:layout_alignLeft="@id/ReportForBank" 
    android:prompt="@string/var_prompt" /> 

<ImageView 
    android:id="@+id/HelpOnVarIcon" 
    android:layout_width="36dp" 
    android:layout_height="36dp" 
    android:layout_toRightOf="@id/PerfVarSpinner" 
    android:layout_alignTop="@id/PerfVarSpinner" 
    android:src="@drawable/help" 
    android:contentDescription="@string/help" 
    android:clickable="true" 
    android:onClick="showDescription" /> 

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="250dp" 
    android:layout_below="@id/PerfVarSpinner" 
    android:layout_alignLeft="@id/ReportForBank" 
    android:background="@color/black_overlay" 
    android:id="@+id/PlotArea" /> 

<TextView 
    android:id="@+id/Recommendations" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/PlotArea" 
    android:layout_alignLeft="@id/PlotArea" 
    android:text="@string/recommendation" 
    android:layout_marginTop="10dp" 
    android:textColor="@color/strong_black" 
    android:textSize="12sp" 
    android:textStyle="bold" /> 

레이아웃 파일. 그리고 여기에 로그 캣 출력입니다 :

08-08 18:25:57.909: D/com.ssjanus.bankstats.MyPerformance(2404): YMin is initially set to: 318580.0 
08-08 18:25:57.909: D/com.ssjanus.bankstats.MyPerformance(2404): YMin is now set to: 318575.0 
08-08 18:25:57.909: D/com.ssjanus.bankstats.MyPerformance(2404): YMax is initially set to: 318580.0 
08-08 18:25:57.919: D/com.ssjanus.bankstats.MyPerformance(2404): YMax is now set to: 318585.0 
08-08 18:25:57.919: D/com.ssjanus.bankstats.MyPerformance(2404): Set YAxis Min on renderer 
08-08 18:25:57.919: D/com.ssjanus.bankstats.MyPerformance(2404): Set YAxis Max on renderer 
08-08 18:25:57.939: D/com.ssjanus.bankstats.MyPerformance(2404): Created chartView 
08-08 18:25:58.079: D/AndroidRuntime(2404): Shutting down VM 
08-08 18:25:58.079: W/dalvikvm(2404): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
08-08 18:25:58.129: E/AndroidRuntime(2404): FATAL EXCEPTION: main 
08-08 18:25:58.129: E/AndroidRuntime(2404): java.lang.IllegalArgumentException: -5.585327982E13 > -1.1170655964E14 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at java.util.TreeMap$BoundedMap.<init>(TreeMap.java:1110) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at java.util.TreeMap.subMap(TreeMap.java:704) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at org.achartengine.model.XYSeries.getRange(XYSeries.java:305) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at org.achartengine.chart.XYChart.draw(XYChart.java:254) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at org.achartengine.GraphicalView.onDraw(GraphicalView.java:168) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.View.draw(View.java:10978) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.View.draw(View.java:10981) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.widget.FrameLayout.draw(FrameLayout.java:450) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.View.draw(View.java:10981) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.View.draw(View.java:10981) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.widget.FrameLayout.draw(FrameLayout.java:450) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.View.draw(View.java:10981) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.widget.FrameLayout.draw(FrameLayout.java:450) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2126) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewRootImpl.draw(ViewRootImpl.java:2026) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.os.Looper.loop(Looper.java:137) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at java.lang.reflect.Method.invoke(Method.java:511) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
08-08 18:25:58.129: E/AndroidRuntime(2404):  at dalvik.system.NativeStart.main(Native Method) 
08-08 18:25:58.739: I/dalvikvm(2404): threadid=3: reacting to signal 3 
08-08 18:25:58.760: I/dalvikvm(2404): Wrote stack traces to '/data/anr/traces.txt' 

업데이트 : 좋아 내가 차 한잔에 폭풍을 제기 생각! 미안합니다. 이 예외의 원인이 된 날짜가 잘못 포맷 된 것으로 나타났습니다.

답변

1

이 예외의 원인이 된 날짜가 잘못 포맷 된 것으로 나타났습니다. 나는 날짜의 "year"부분을 잡아 먹는 것을 제외하고 SimpleDateFormat을 사용하여 java.util.Date로 SQL 날짜 형식 (yyyy-MM-dd)에서 날짜를 변환했습니다. 예를 들어, 연도를 200으로 설정하는 대신 이로 인해 예외가 발생했습니다.