0

我得到了我的應用程序的第一次崩潰報告。它說,有一個java.lang.ArithmeticException: divide by zero如何確定哪個值爲0?

的異常這兩行之一:

//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

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);

,它應該工作。

+0

我是否也應該將sWP更改爲雙倍?同樣在這種情況下,res.getDisplayMetrics()。densityDpi等於320 – Roymunson

+0

@Roymunson將sWP更改爲double對於我來說沒有任何意義,如您所說_ // sWP代表「屏幕寬度以像素爲單位」_。我很抱歉,我忘了投給int。我會編輯我的答案。 –

+0

@Roymunson對於densityDpi獲得的320的值,在API 9中引入DENSITY_XHIGH時,有人忘記更改API 4的densityDpi文檔。 –

相關問題