Я пытаюсь преобразовать вид LineChart MPAndroidChart в объект Bitmap, когда пользователь нажимает кнопку, чтобы сохранить диаграмму в качестве изображения. Однако я получаю исключение ArrayIndexOutOfBoundsException. Я использую MPAndroidChart v. 3.0.0-бета. Код следующим образом:Преобразование представления MPAndroidChart в Bitmap дает 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;
}
Исключением является следующее и линии 1409 из ConstantsAndUtils.java является view.draw (холст) выше.
java.lang.ArrayIndexOutOfBoundsException: length = 1; Индекс = 1 в com.github.mikephil.charting.renderer.LineChartRenderer.drawCircles (LineChartRenderer.java:689) в com.github.mikephil.charting.renderer.LineChartRenderer.drawExtras (LineChartRenderer.java:595) на ком .github.mikephil.charting.charts.BarLineChartBase.onDraw (BarLineChartBase.java:252) на android.view.View.draw (View.java:14788) на com.dnaphone.edu.utils.ConstantsAndUtils.getBitmapFromView (ConstantsAndUtils .java: 1409) в com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground (HistoryExperimentResultFragment.java:1886) в com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground (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) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor .java: 1112) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587) в java.lang.Thread.run (Thread.java:841)
Edit: проблема была решена в финальной версии 3.0.0.
Я пробовал, но у меня такое же исключение. – aleGrazioli
Я думаю, что нет ничего такого, что генерирует ArrayIndexOutOfBoundsException. –
Я проверил библиотечный код на GitHub и есть ошибка в функции, которая обновляет счетчик до размера массива, а затем использует его для доступа к такому массиву. Конечно, если счетчик имеет значение n, последний элемент массива имеет индекс n-1. Это генерирует исключение. Я жду, когда автор библиотеки исправит проблему. – aleGrazioli