奇怪的例外:不能投字符串使用getBoolean当布尔 [英] Weird exception: Cannot cast String to Boolean when using getBoolean
问题描述
我得到一个非常奇怪的错误。
我有2个活动。在这两个,我发现了共享preferences
使用 MODE_PRIVATE
(如果它事项)通过 SP =获取preferences(MODE_PRIVATE);
在每个活动的的onCreate()
我打电话 sp.getBoolean(IntroActivity.SHOW_INTRO,真)
I'm getting a very weird error.
I have 2 activities. On both I'm getting the SharedPreferences
using MODE_PRIVATE
(if it matters) by sp = getPreferences(MODE_PRIVATE);
on each activity's onCreate()
I'm calling sp.getBoolean(IntroActivity.SHOW_INTRO, true)
在 IntroActivity
能正常工作。但是,当我试图在主要活动中,我得到这个
On the IntroActivity
this works fine. But when I'm trying in the main activity, I'm getting this
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)
我确信,我不会把一个字符串
地方在与同一个键中间
I made sure that I'm not putting a String
somewhere in the middle with that same key
任何想法?
谢谢!
编辑: 一些code:
some code:
//onCreate()
sp = getPreferences(MODE_PRIVATE);
// other method
boolean showIntro = sp.getBoolean(IntroActivity.SHOW_INTRO, true); // Exception is here
showIntroCheckBox.setChecked(showIntro);
如果它的事项时,code会抛出异常是在一个按钮的的onClick
If it matters, the code which throws the exception is inside a button's onClick
推荐答案
如果有以往任何时候都一个字符串,用该密钥,即使是偶然,它会呆在那里,直到您清除应用程序的数据或卸载。尝试卸载它,看看它是否仍然出现。
If there's ever been a string with that key, even if by accident, it will stay there until you clear the app's data or uninstall. Try uninstalling it to see if it still occurs.
这篇关于奇怪的例外:不能投字符串使用getBoolean当布尔的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!