¿Cómo se declara el tipo de preferencia de Android?

Tengo un preferences.xml que se parece a esto:

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <EditTextPreference android:name="Sample" android:enabled="true" android:persistent="true" android:summary="Sample" android:defaultValue="3.0" android:title="Sample" android:key="sample" /> </PreferenceScreen> 

Cuando hago sp.getString ("sample", "3.0"), funciona bien y devuelve una cadena, pero no debe ser una cadena, debe ser un flotador. Ejecutar sp.getFloat ("sample", 3.0f) lanza una ClassCastException porque es una cadena.

¿Qué debo poner en el XML para que la preferencia se almacena como un flotador?

En tus preferencias xml puedes agregar una opción android:numeric con el valor "integer" . De esta manera, el usuario sólo debe poder introducir un valor entero válido.

Cuando cargue el ajuste, debe intentar analizarlo a un número usted mismo (ya que todos los valores se almacenan como cadenas (@mbaird a continuación)):

 try { float val = Float.parseFloat(sp.getString("sample", "3.0f")); } catch (NumberFormatException e) { // "sample" was not an integer value // You should probably start settings again } 

Si está utilizando la pantalla de preferencias en la API de la pantalla en lugar de escribir sus propias preferencias Diálogos o Actividades, entonces usted va a ser un poco limitado en algunos aspectos. Por ejemplo, EditTextPreference siempre almacenará el valor como String.

Desde el API Doc :

Esta preferencia almacenará una cadena en SharedPreferences.

Observo que no parece haber ninguna manera para que usted restrinja al usuario a apenas mecanografiar adentro un número válido del punto flotante en su campo del texto. ¿Qué harías si escribieran "abc"?

Como mbaird señaló que no puede obligar a almacenar como flotador.

Pero puede cambiar el EditTextPreference a una vista de Preference simple e implementar el evento de click para ello. De esta manera podrás crear y mostrar tu propio cuadro de diálogo, para editar el valor, y así podrás restringir el formato y guardarlo como flotante en el archivo de preferencias.

  • Preferencias de Android: Valores predeterminados incorrectos DESPITE "setDefaultValues"
  • Las preferencias compartidas sólo se guardan por primera vez
  • Utilizar una subclase personalizada de SharedPreferences con PreferenceActivity o PreferenceFragment
  • Cómo hacer que un cuadro de diálogo de PreferenciaActividad abra una ventana de diálogo para establecer una preferencia personalizada
  • Anulación del diseño utilizado para una preferencia en una preferenciaActividad / preferencia Pantalla utilizando temas
  • Las preferencias compartidas se reinician cuando la aplicación se cierra con fuerza o se bloquea
  • ¿Cuál es el nombre de archivo utilizado por defecto las preferencias compartidas?
  • Archivo de preferencias del usuario vs Archivo de preferencias de la aplicación
  • Establecer indicadores de intención para PreferenceScreen en xml
  • Recargar preferencias en PreferenciaActividad al reanudar
  • Preferencia de tono de tono
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.