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

안드로이드 토글버튼 상태저장..

0 추천

현재 토글버튼의 ON,OFF 기능의 저장은 됩니다.

그런데 java쪽에서 설정한 ON,OFF에 따른 버튼색상과 텍스트 색상은 저장이 되지가 않아서

이런식으로 소스를 짜봤는데요. 토글버튼 액티비티가 열리지도 않고.. 어플이 강제종료되네요..

원래 SharedPreference기능으로 색상은 따로 저장이 안되나요..?

로그캣 부분은 댓글에 올리겠습니다... 도움바랍니다..ㅜ

 

헬프미 (5,430 포인트) 님이 2015년 1월 4일 질문
헬프미님이 2015년 1월 4일 수정
01-04 15:13:48.185: W/dalvikvm(2213): threadid=1: thread exiting with uncaught exception (group=0x415162a0)
01-04 15:13:48.210: E/AndroidRuntime(2213): FATAL EXCEPTION: main
01-04 15:13:48.210: E/AndroidRuntime(2213): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.andro/com.andro.settingActivity}: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.ActivityThread.access$600(ActivityThread.java:140)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.os.Looper.loop(Looper.java:137)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.ActivityThread.main(ActivityThread.java:4898)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at java.lang.reflect.Method.invokeNative(Native Method)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at java.lang.reflect.Method.invoke(Method.java:511)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at dalvik.system.NativeStart.main(Native Method)
01-04 15:13:48.210: E/AndroidRuntime(2213): Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:205)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at com.andro.settingActivity.onCreate(settingActivity.java:56)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.Activity.performCreate(Activity.java:5206)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
01-04 15:13:48.210: E/AndroidRuntime(2213):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
01-04 15:13:48.210: E/AndroidRuntime(2213):     ... 11 more
01-04 15:13:50.185: I/Process(2213): Sending signal. PID: 2213 SIG: 9

이구요.  56번째줄은       
String btn5text1 = pref.getString("btn5", "#FFFFFF");    이부분 입니다...

1개의 답변

0 추천
 
채택된 답변

ClassCastException 가 발생했네요..

 

editor.putBoolean("btn5", btn5.isChecked());

editor.putString("btn5", "#FFFFFF");  // 버튼5 텍스트 하얀색 저장

editor.putString("btn5", "#34B62C");  // 버튼5 백그라운드 초록색 저장
 
첫번째라인에서 btn5 속성을 Boolean 값으로 줘놓고 그 아래에서 String를 또 줬으니....
각각의 속성의 이름이 분별이 가능하도록 명확한 이름을 주시기바랍니다
 

editor.putBoolean("btn5_state", btn5.isChecked());

editor.putString("btn5_color", "#FFFFFF");  // 버튼5 텍스트 하얀색 저장

editor.putString("btn5_back", "#34B62C");  // 버튼5 백그라운드 초록색 저장

이러면 위 에러는 없어질것입니다.

nicehee (73,100 포인트) 님이 2015년 1월 4일 답변
헬프미님이 2015년 1월 4일 채택됨
정말 감사합니다...근데..
버튼5,6이 눌렸을때 버튼7이 활성화된게 저장이 되야 하는데...
이런건 어떤식으로 해야되나요..?
...