Android Studio

[안드로이드 스튜디오] textview.setText()에 int, double형 데이터를 입력해야 할 때

DL2 2022. 3. 11. 00:41
                    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) 등의 형식으로 작성하면 오류가 나지 않는다. 단순 데이터 외에 출력할 내용이 더 있다면 유용하게 쓸 수 있는 방법.



그외 시도 방법: .