사용자가 단추를 누를 때 차트를 이미지로 저장하기 위해 MPAndroidChart LineChart보기를 비트 맵 개체로 변환하려고합니다. 그러나 ArrayIndexOutOfBoundsException이 발생합니다. MPAndroidChart v. 3.0.0-beta를 사용하고 있습니다.MPAndroidChart보기를 비트 맵으로 변환하면 ArrayIndexOutOfBoundsException이 발생합니다.
public static Bitmap getBitmapFromView(View graph) {
Bitmap returnedBitmap = Bitmap.createBitmap(graph.getWidth(), graph.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
Drawable bgDrawable = graph.getBackground();
if (bgDrawable != null)
bgDrawable.draw(canvas);
else
canvas.drawColor(Color.WHITE);
view.draw(canvas);
return returnedBitmap;
}
예외가 다음과 ConstantsAndUtils.java 라인 1409 상기 view.draw (캔버스)이다이다 코드는 다음과 같다.
java.lang.ArrayIndexOutOfBoundsException : length = 1; 인덱스 = 1 com.github.mikephil.charting.renderer.LineChartRenderer.drawExtras (LineChartRenderer.java:595) 에서 com.github.mikephil.charting.renderer.LineChartRenderer.drawCircles (LineChartRenderer.java:689) 에서의 COM .github.mikephil.charting.charts.BarLineChartBase.onDraw (BarLineChartBase.java:252) android.view.View.draw (View.java:14788) at com.dnaphone.edu.utils.ConstantsAndUtils.getBitmapFromView (ConstantsAndUtils 된 .java : 1409 com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground에서 com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground (HistoryExperimentResultFragment.java:1886) (HistoryExperimentResultFragment.java:1655) 에서) 안드로이드에서 .os.AsyncTask $ 2.call (AsyncTask.java:288) 에서 java.util.concurrent.FutureTask.run (FutureTask.java:237) android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor 된 .java : 1112 java.lang.Thread.run에서 java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587) 에서) (Thread.java:841)
편집 : 이 문제는 최종 3.0.0 릴리스에서 해결되었습니다. 당신은 이미지로 차트를 저장하려면
시도했지만 동일한 예외가 발생합니다. – aleGrazioli
나는 이것에 ArrayIndexOutOfBoundsException을 생성하는 것은 아무것도 없다고 생각한다. –
GitHub에서 라이브러리 코드를 검사했는데 배열의 크기까지 카운터를 업데이트하는 함수에 오류가 있습니다. 그런 다음이 배열을 사용하여 이러한 배열에 액세스합니다. 물론 카운터에 값 n이 있으면 마지막 배열 요소의 인덱스는 n-1입니다. 이 예외가 생성됩니다. lib의 저자가 문제를 해결하기를 기다리고 있습니다. – aleGrazioli