Android Preferences error, "String no se puede convertir en int"
Estoy intentando fijar una actividad de las preferencias pero mi app guarda el estallar y consigo el logcat siguiente:
EXCEPCIÓN FATAL: principal java.lang.RuntimeException: No se puede iniciar la actividad ComponentInfo {com.appthing.myapp / com.appthing.myapp.Main}: java.lang.ClassCastException: java.lang.String no se puede transmitir a java.lang. Entero
Causado por: java.lang.ClassCastException: java.lang.String no se puede transmitir a java.lang.Integer 07-24 16: 37: 59.556: E / AndroidRuntime (17384): at android.app.SharedPreferencesImpl.getInt (SharedPreferencesImpl. Java: 240)
En mi actividad Main
tengo el siguiente código dentro del método onResume()
:
SeekBar tipSeekBar = (SeekBar) findViewById(R.id.tipSeekBar); SeekBar splitSeekBar = (SeekBar) findViewById(R.id.splitSeekBar); SharedPreferences preferences = PreferenceManager .getDefaultSharedPreferences(this); tipSeekBar.setProgress(preferences.getInt("defaultTip", 15)); splitSeekBar.setProgress(preferences.getInt("defaultSplit", 1)); tipSeekBar.setMax(preferences.getInt("maxTip", 25)); splitSeekBar.setMax(preferences.getInt("maxSplit", 10));
Esto es lo que tengo en la clase Preferencias (como se solicita):
addPreferencesFromResource(R.layout.preferences); // I was told in tutorials this is all I need in the oncreate method
No entiendo por qué dice algo sobre una cuerda. Todos mis valores son números enteros y estoy usando android:inputType="number"
para asegurarse de que solo se puede ingresar un int. También he intentado desinstalar y reinstalar la aplicación para borrar la caché y nada funciona.
RESUELTO:
"Sus preferencias en XML, incluso si se establece android: inputType =" número "todavía se almacenan como una cadena" (por Waza_Be ). Todo lo que tenía que hacer es hacer Integer.parseInt()
para agarrar el valor correcto.
- Android convertir Cadena a byte - tomar byte en las piezas
- Android, ¿Cómo puedo convertir la cadena a la fecha?
- Cómo mostrar un formato doble como un precio en una vista de texto en android
- ¿Cómo se puede convertir mejor StringBuilder en String ?
- Cómo formatear una cadena para un android de textview
- String-array dentro de string-array
- Cómo leer / escribir cadena de un archivo en Android
- ¿Por qué la marquesina no funciona en Widget?
Sus preferencias en XML, incluso si establece android:inputType="number"
todavía se almacenan como String
Usted tiene 2 opciones:
1) el 'no tan agradable': Integer.parseInt( preferences.getString("defaultTip", "15"));
2) Utilizando su propio tipo de preferencia entero. Más complicado establecer en primer lugar pero realmente mejor (pregunta similar aquí: https://stackoverflow.com/a/3755608/327402 )
En su fragmento, ¿en qué línea se produce la excepción? ¿Es "defatult" un error tipográfico?
splitSeekBar.setProgress(preferences.getInt("defatultSplit", 1));
Si está almacenando las preferencias con los tipos de datos correctos, entonces no debería ser problema. Por favor, mira el JavaDoc aquí .
- Retrofit 2.0 beta1: cómo publicar cuerpo de cuerda cruda
- Comprueba la tasa de ancho de banda en Android