[안드로이드 공부]/프리퍼런스

안드로이드 preference persisit 의 비밀 한가지

코코모아 2015. 10. 8. 20:11

아래는 코모스튜디오가 직접 만든 무료 앱이에요
(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

preference에서 getPersistedString 으로 저장된 값을 가져오고 있었는데 이 값을 String에서 Int로 바꾸었다. 그리고 이젠 getPersistedInt 요렇게 값을 가져 오도록 한 뒤 실행을 했더니... 저승사자가 또 와버렸다. 안드로이드 초보인 코모에겐 아직도 까만 화면의 팝업이 너무 두렵다. 그리고 희한 하게도 이상한 에러로 죽으니 참으로 입이 타들어 간다.


Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer


분명 int로 바꾸면서 int 변수에 넣어 줬는데 도데체 이게 무슨 귀신이 신나서? 까까불어 먹고 있는 소리인가... 


int a - getPersistedInt(10); 


이런 말도 안되는 에러가 보일 때는 뭔가 안드로이드 내부나 단말기 내부와 연관이 되어있다는 것을 생각하자!


그렇다... 이전에 String으로 프리퍼런스를 저장하고 있었는데... 이게 한 순간에 int로 변할리가 없었다. 프리퍼런스는 파일이다... 즉, 데이터를 지워줘야 한다. 참으로 어처구니 없고, 참으로 말이 되는 얘기이지 않은가?

모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.