奇怪的异常:使用getBoolean时无法将String转换为Boolean

La *_*bla 14 java android casting exception sharedpreferences

我收到一个非常奇怪的错误.我有2个活动.在 我正在调用的每个活动上,我都得到了SharedPreferences使用MODE_PRIVATE(如果重要的话)sp = getPreferences(MODE_PRIVATE);onCreate()sp.getBoolean(IntroActivity.SHOW_INTRO, true)

IntroActivity这个工作正常.但是当我在主要活动中尝试时,我得到了这个

10-12 04:55:23.208: E/AndroidRuntime(11668): FATAL EXCEPTION: main
10-12 04:55:23.208: E/AndroidRuntime(11668): java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
10-12 04:55:23.208: E/AndroidRuntime(11668):    at android.app.SharedPreferencesImpl.getBoolean(SharedPreferencesImpl.java:242)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at com.lablabla.parkme.ParkMeActivity$2.onClick(ParkMeActivity.java:194)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at android.view.View.performClick(View.java:4084)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at android.view.View$PerformClick.run(View.java:16966)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at android.os.Handler.handleCallback(Handler.java:615)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at android.os.Looper.loop(Looper.java:137)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at android.app.ActivityThread.main(ActivityThread.java:4745)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at java.lang.reflect.Method.invokeNative(Native Method)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at java.lang.reflect.Method.invoke(Method.java:511)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-12 04:55:23.208: E/AndroidRuntime(11668):    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我确定我没有把String同一把钥匙放在中间的某个地方

有任何想法吗?

谢谢!

编辑:一些代码:

//onCreate()
sp = getPreferences(MODE_PRIVATE);

// other method
boolean showIntro = sp.getBoolean(IntroActivity.SHOW_INTRO, true); // Exception is here
showIntroCheckBox.setChecked(showIntro);
Run Code Online (Sandbox Code Playgroud)

如果重要,抛出异常的代码就在按钮内 onClick

Geo*_*its 47

如果有一个带有该密钥的字符串,即使是偶然的,它也将保留在那里,直到你清除应用程序的数据或卸载.尝试卸载它以查看它是否仍然出现.