0

내 앱에 대한 내 첫 번째 충돌 보고서가 있습니다.어떤 값이 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 이제까지 수 영 : 그것은 java.lang.ArithmeticException: divide by zero

예외이 두 라인 중 하나가된다라고? 아니면 getDisplayMetrics().densityDpi도 제로일까요?

답변

0

res.getDisplayMetrics().densityDpi은 120, 160 또는 240 (또는 이와 비슷한 것)입니다 (https://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi 참조).

DisplayMetrics.DENSITY_DEFAULT은 항상 1603입니다 (https://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_DEFAULT 참조).

res.getDisplayMetrics().densityDpi/DisplayMetrics.DENSITY_DEFAULT은 int를 int로 나누기 때문에 0을 반환합니다.

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 320의 값에 관해서는 densityDpi를 얻었습니다. API 9에 DENSITY_XHIGH를 도입 할 때 누군가가 densityDpi에 대한 문서를 API 4에서 변경하는 것을 잊었습니다. –