Android Crashing auf ListPreference

Ich versuche, meiner Anwendung eine Listenvorgabe hinzuzufügen. Mein xml-Code ist der folgende:

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="@string/calendarsettings"> <CheckBoxPreference android:key="syncWithCalendar" android:title="@string/setting_calendarsync" android:summary="@string/setting_calendarsync"></CheckBoxPreference> <CheckBoxPreference android:key="calendarAlarm" android:title="@string/settings_calendaralarm" android:summary="@string/settings_calendaralarm"></CheckBoxPreference> </PreferenceCategory> <PreferenceCategory android:title="@string/filters"> <ListPreference android:key="dayFilter" android:title="@string/dayfilter" android:summary="@string/dayfilter" android:entries="@array/dayFilterArray" android:entryValues="@array/dayFilterValues" /> </PreferenceCategory> </PreferenceScreen> 

Und meine Array-Werte sind:

  <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="dayFilterArray"> <item>a</item> <item>b</item> <item>c</item> <item>d</item> <item>e</item> <item>f</item> <item>g</item> </string-array> <string-array name="dayFilterValues"> <item>0</item> <item>3</item> <item>7</item> <item>14</item> <item>30</item> <item>90</item> <item>365</item> </string-array> </resources> 

Allerdings, wenn ich versuche, mein Präferenzmenü einzugeben, stürzt es mit der folgenden Ausnahme ab:

 10-03 20:27:56.938: ERROR/AndroidRuntime(1111): Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 

Das bezieht sich auf diese Codezeile:

  addPreferencesFromResource(R.xml.preferences); 

Irgendwelche Gedanken auf diesem und warum ist es passiert? Vielen Dank.

FULL STACK TRACE:

 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): FATAL EXCEPTION: main 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): java.lang.RuntimeException: Unable to start activity ComponentInfo{cPreferencesActivity}: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.app.ActivityThread.access$1500(ActivityThread.java:122) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.os.Handler.dispatchMessage(Handler.java:99) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.os.Looper.loop(Looper.java:132) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.app.ActivityThread.main(ActivityThread.java:4025) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at java.lang.reflect.Method.invokeNative(Native Method) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at java.lang.reflect.Method.invoke(Method.java:491) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at dalvik.system.NativeStart.main(Native Method) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:203) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.Preference.getPersistedString(Preference.java:1367) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.ListPreference.onSetInitialValue(ListPreference.java:278) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.Preference.dispatchSetInitialValue(Preference.java:1283) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.Preference.onAttachedToHierarchy(Preference.java:1095) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.PreferenceGroup.addPreference(PreferenceGroup.java:156) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:97) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:38) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.GenericInflater.rInflate(GenericInflater.java:488) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.GenericInflater.rInflate(GenericInflater.java:493) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.GenericInflater.inflate(GenericInflater.java:326) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.GenericInflater.inflate(GenericInflater.java:263) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:269) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.preference.PreferenceActivity.addPreferencesFromResource(PreferenceActivity.java:1333) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at PreferencesActivity.onCreate(PreferencesActivity.java:33) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712) 10-03 21:13:06.828: ERROR/AndroidRuntime(3045): ... 11 more 

  • NullPointerException Warnung auf getView () innerhalb onActivityCreated / onStart / onViewCreated Methode
  • Merkwürdiges Verhalten in do / while-Anweisung auf Galaxy S5 und Android 5.1.1
  • Wo ist main () in Android?
  • Wie benutzt man googletest zum Testen von C ++ - Code, der in Java auf Android aufruft?
  • Android-Service funktioniert nicht als Singleton
  • Es wurden keine Java-Dateien gefunden, die CordovaActivity erweitern. Wenn sie "cordova bauen"
  • Kann keinen Handler in Thread erstellen, der nicht Looper.prepare () in AsyncTask für ProgressDialog aufgerufen hat
  • GoogleApiClient.connect () 'wurde erwartet, dass es vom Typ Interface ist, aber es wurde gefunden, dass es virtuell ist
  • 2 Solutions collect form web for “Android Crashing auf ListPreference”

    Du hast in den Vorlieben einen Integer vorher bestanden. ListActivity erwartet, dass ein String so cast fehlschlägt.

    Nennen Sie einfach diesen Code zu Beginn von onCreate , um den falschen Wert zu entfernen, und das sollte behoben werden:

     PreferenceManager.getDefaultSharedPreferences(this).edit().remove("dayFilter").commit(); 

    Wenn es immer noch passiert, als Sie wahrscheinlich mit dem dayFilter zweimal als Schlüssel für verschiedene Präferenzen oder dayFilter dass Schlüssel auf eigene Faust als Integer irgendwo in Ihrem Code.

    Wenn dies nicht funktioniert, dann versuchen Sie, Ihre Einstellungen von diesen Standorten zu entfernen:

     /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml // on some devices /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml 

    Wenn dies scheitert, versuchen Sie, die Anwendung zu deinstallieren, damit sie entfernt werden können (dies funktioniert nicht auf meinem Samsung Galaxy S – geteilte Vorlieben werden nicht gelöscht …)

    Ihre XML-Datei ist nicht korrekt geschrieben, Sie deklarieren ein Array von Zeichenfolgen, aber Sie geben Integers daher die Cast-Ausnahme.

      <string-array name="dayFilterValues"> <item>0</item> ... <item>365</item> </string-array> 

    Um es zu regeln, setzen Sie einfach Zitate um die Integer-Werte:

     <item>"365"</item> 

    Dann in deiner App musst du die Zeichenfolge in eine Integer mit:

     int value = Integer.parseInt(str); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.