我的应用程序获得了第一份崩溃报告。它说有java.lang.ArithmeticException: divide by zero
例外是以下两行之一:
//sWP stands for "Screen Width in Pixels"
// sW stands for "Screen Width" The code is old though, so I may be incorrect for both variables.
//res is just getResources()
int sWP = sW / (res.getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
float bHeight = 50 * ((float)res.getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
DisplayMetrics.DENSITY_DEFAULT
可以为零吗?或getDisplayMetrics().densityDpi
可能为零?
答案 0 :(得分:0)
res.getDisplayMetrics().densityDpi
将为120,160或240(或类似内容),请参阅https://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi。
DisplayMetrics.DENSITY_DEFAULT
经常等于160,请参阅https://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_DEFAULT。
res.getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT
将返回0,因为您将int除以int。
将两行中的第一行更改为
int sWP = (int) sW / (((double) res.getDisplayMetrics().densityDpi) / DisplayMetrics.DENSITY_DEFAULT);
它应该有用。