JSONObject json = thread.getStatus();
//json 파싱해서 ui에 삽입
if(json != null){
tempNow.setText(json.optDouble("currentTemp", -1.0));
humidNow.setText(json.optDouble("currentHum", -1.0));
}
(내 코드 일부)
플랫폼: android studio
오류 현상:
다른 스레드로부터 json 오브젝트를 받아와서 ui를 갱신하는 코드를 작성 중에, 뜬금없이 setText() 메소드의 인자에 오류가 났다. 살펴보니 int로 casting을 하라고 한다. 편집기가 내 의도와 다르게 인식한 거 같다.
사유:
setText() 메소드는 인자로 resId 값(int 형), char 배열, CharSequence 인터페이스 등을 받을 수 있다.
한편 resId 값이 아니라 직접 int 값을 출력해야하는 경우가 있고, 나처럼 double 형을 출력해야하는 경우가 있을 것이다.
내 경우 double 형의 데이터를 문자열 캐스트 없이 입력했고(...) double은 숫자 자료형이라 편집기에서 int로 캐스트 하는 것이 내 의도에 맞다고 판단한 것 같다.
해결책:
int, double 등 숫자 자료형인 경우 모두 적용된다.
1. String.valueOf() 메소드 사용
string 데이터로 바뀐다. 아주 잘 됨.
2. 빈 문자열과 concatenate해서 인자로 넣는다.
setText("" + 1.0) 등의 형식으로 작성하면 오류가 나지 않는다. 단순 데이터 외에 출력할 내용이 더 있다면 유용하게 쓸 수 있는 방법.
그외 시도 방법: .
'Android Studio' 카테고리의 다른 글
[안드로이드 스튜디오] InflateException, UnsupportedOperationException 해결 방법 (0) | 2022.02.07 |
---|---|
[안드로이드 스튜디오] avd(Emulator)가 오류 메시지 없이 먹통일 때 (0) | 2021.10.03 |