当设备处于横向模式时 MPAndroidChart PieChartRenderer 崩溃

MPAndroidChart PieChartRenderer crash when device is in landscape mode

我在我的应用程序中使用 MPAndroidChart。 我收到了很多来自用户的报告。 他们面临的问题是:

java.lang.IllegalArgumentException: width and height must be > 0
at android.graphics.Bitmap.createBitmap(Bitmap.java:922)
at android.graphics.Bitmap.createBitmap(Bitmap.java:901)
at android.graphics.Bitmap.createBitmap(Bitmap.java:868)
at com.github.mikephil.charting.renderer.PieChartRenderer.drawData(PieChartRenderer.java:79)
at com.github.mikephil.charting.charts.PieChart.onDraw(PieChart.java:96)
at android.view.View.draw(View.java:15423)
...

这些是导致崩溃的行。

 mDrawBitmap = Bitmap.createBitmap((int) mViewPortHandler.getChartWidth(),
(int) mViewPortHandler.getChartHeight(), Bitmap.Config.ARGB_8888);

仅当我的平板电脑处于横屏模式时,该应用才会崩溃。

当我的设备处于横向模式时,图表 class 中的 onSizeChanged 似乎没有被调用。 横向模式 -> 纵向模式,调用 onSizeChanged 纵向模式 -> 横向模式,不调用 onSizeChanged

你确实是对的,Bitmap 初始化的高度从未被检查过。

我刚刚发布了一个修复程序,它在最新的提交中:https://github.com/PhilJay/MPAndroidChart/commit/bff61718198f839aa819c8769d4f71e755625b94

你可以去看看或者等我出下一个版本

我发现了问题。 当我尝试以编程方式尝试容器的 LayoutParams 时,应用程序崩溃。

当我只使用 xml 布局中指定的参数时,它起作用了。