마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SharedPreference 에서 String 값을 받으려는데 integer 캐스팅 오류가 뜹니다.

0 추천
public static class SavedIdType
{
    static public final String KEY = "user_id_type";
    static public final String def = "";
    public static void write(String val){Preference.write(Preference.context, NAME_DATA, KEY, val);}
    public static String read(){return Preference.read(Preference.context, NAME_DATA, KEY, def);}
    public static void remove(){Preference.remove(Preference.context, NAME_DATA, KEY);}
}

결과

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

at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:223)

 

상기 코드처럼 SharefPreference값을 받으려고 하는데 분명 스트링 값을 가져오려는데 왜 integer에서 String으로 캐스팅하는데 실해했다고 나오는지 알수 없습니다. 

더 웃긴건 어느 기기서는 정상적으로 되는데(베가 R3) 다른 한 기기서(Moto X 2세대)이 문제가 나오는데 어떻게 해결해야 할지 모르겠습니다. ㅠㅠ

Tesl4 (380 포인트) 님이 2016년 3월 30일 질문

1개의 답변

+1 추천

코드가 일부만 있어서(위 코드는 이해도 안됩니다. ^^;) 이유는 알 수 없지만,

해당 기기(Moto X)의 앱을 완전히 지우고 다시 시도해보세요.

예전에 "user_id_type" 에 넣어 두었던 int 값이 나오는 것 같습니다.

아니면 "user_id_type" 를 두 곳 이상에서 사용하는 것 같습니다.

그리고,

Preference read, write 는 ClassCastException 이 있는 함수입니다.

Try Catch 문을 이용해서 예외 처리를 해야 합니다.

JINASYS (5,630 포인트) 님이 2016년 3월 30일 답변
...