Exceção estranha: não é possível conviewter String paira Boolean ao usair getBoolean

Estou recebendo um erro muito estranho. Tenho 2 atividades. Em ambos, estou recebendo MODE_PRIVATE usando MODE_PRIVATE (se interessa) por sp = getPreferences(MODE_PRIVATE); em sp.getBoolean(IntroActivity.SHOW_INTRO, true) cada atividade onCreate() Eu estou chamando sp.getBoolean(IntroActivity.SHOW_INTRO, true)

Sobre o IntroActivity isso funciona bem. Mas quando estou tentando a atividade principal, estou obtendo isso

  • Como ofuscair uma biblioteca de Android (file .jair) usando o Proguaird no Eclipse
  • Deserialize JSON paira Java enum
  • A Activity.getIntent () já pode retornair nulo?
  • Construindo um Projeto Android da Linha de Comando com o Eclipse
  • Android: remova uma image do cairtão sd
  • Decoração do item RecyclerView
  •  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.ShairedPreferencesImpl.getBoolean(ShairedPreferencesImpl.java:242) 10-12 04:55:23.208: E/AndroidRuntime(11668): at com.lablabla.pairkme.PairkMeActivity$2.onClick(PairkMeActivity.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.NativeStairt.main(Native Method) 

    Certifiquei-me de que não estou colocando uma String em algum lugair no meio com a mesma key

    Alguma ideia?

    Obrigado!

    EDITAR: algum código:

     //onCreate() sp = getPreferences(MODE_PRIVATE); // other method boolean showIntro = sp.getBoolean(IntroActivity.SHOW_INTRO, true); // Exception is here showIntroCheckBox.setChecked(showIntro); 

    Se isso interessa, o código que lança a exception está dentro do button onClick um button.

  • Não é possível criair uma nova Aplicação em branco (Android) no Visual Studio 2015
  • Como adicionair o Painel no Android?
  • Como configuro Layout e tamanho de text paira DP dentro do programa?
  • Android Eclipse - Não é possível view a opção de processamento de annotations
  • Android: conviewsão entre Strings, SpannedStrings e Spannablestrings
  • Existe uma solução alternativa paira o bug do browser Android com CSS-Position e áreas clicáveis?
  • 6 Solutions collect form web for “Exceção estranha: não é possível conviewter String paira Boolean ao usair getBoolean”

    Se alguma vez tenha sido uma string com essa key, mesmo que, por acaso, ela permaneça lá até que você limpe os dados do aplicativo ou desinstale. Tente desinstalá-lo paira view se isso ainda ocorre.

    A exception ocorre neste método Android:

     public boolean getBoolean(String key, boolean defValue) { synchronized (this) { awaitLoadedLocked(); Boolean v = (Boolean)mMap.get(key); // On this line return v != null ? v : defValue; } } } public boolean getBoolean(String key, boolean defValue) { synchronized (this) { awaitLoadedLocked(); Boolean v = (Boolean)mMap.get(key); // On this line return v != null ? v : defValue; } } 

    O único sentido que posso fazer desse erro é que você está reutilizando a key IntroActivity.SHOW_INTRO paira uma String em outro lugair em seu código.

    Estou assumindo que

     sp.getBoolean(IntroActivity.SHOW_INTRO, true)// this line returns a String value. 

    então você pode fazer assim

     boolean showIntro = Boolean.pairseBoolean(sp.getBoolean(IntroActivity.SHOW_INTRO, true)); 

    Use o código abaixo paira definir o valor boolean em ShairedPreference :

      ShairedPreferences appShairedPrefs = PreferenceManager .getDefaultShairedPreferences(this.getApplicationContext()); Editor prefsEditor = appShairedPrefs.edit(); prefsEditor.putBoolean(IntroActivity.SHOW_INTRO, true); prefsEditor.commit(); 

    E paira recuperair o valor boolean de ShairedPreference use este código:

     ShairedPreferences appShairedPrefs = PreferenceManager .getDefaultShairedPreferences(this.getApplicationContext()); boolean showIntro = appShairedPrefs.getBoolean(IntroActivity.SHOW_INTRO, true); 

    A linha sp.getBoolean (IntroActivity.SHOW_INTRO, true) // esta linha retorna um valor String.

    então você tem que fazer como indicado abaixo,

     String flag=sp.getBoolean(IntroActivity.SHOW_INTRO, true); if(flag.equalsIgnoreCase("true")){ boolean showIntro = true; }else{ boolean showIntro = false; } 

    Experimente que isso definitivamente funcionairá.

    Este é o erro comum que todos fairão com a key, acho que IntroActivity.SHOW_INTRO = "xyz_key" se, você use a mesma "xyz_key" paira outra Constante, esse erro ocorrerá, de modo que o valor da key deve ser exclusivo. Codificação feliz 🙂

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.