2014-06-22 13 views
8

Il metodo getFloat() esiste per estrarre un valore float dall'API di Android SharedPreferences. Tuttavia, nel file xml, EditTextPreference memorizza sempre un valore stringa, anche se è definito un valore numerico.Qual è il punto di SharedPreferences.getFloat()

Ci si aspetterebbe che getFloat() restituisca automaticamente questo valore, ma invece genera uno ClassCastException e dobbiamo utilizzare Float.parseFloat(SharedPreferences.getString()) per ottenere questo valore.

Non c'è letteralmente alcun uso per getFloat() o mi manca qualcosa qui?

+1

Se ho capito correttamente, per quanto riguarda la memorizzazione dei valori dei campi di testo di modifica, sì li si memorizzano come stringhe e non si usa getFloat(). Da quanto mi risulta, getFloat() è usato di più per memorizzare variabili matematiche o forse anche coordinate GPS. – zgc7009

risposta

5

Il metodo getFloat() esiste per estrarre un valore float dall'API SharedPreferences di Android.

Sì.

Eppure, in xml, EditTextPreference memorizza sempre un valore di stringa, anche se è definito un valore numerico.

Penso che tu stia confondendo le cose qui. Stai impostando SharedPreferences uguale agli elementi su un PreferenceScreen.

PreferenceScreen's salvare tutti i loro valori nel tuo SharedPreferences ed è vero che EditTextPreferences non può salvare un galleggiante, ma tuttavia è possibile salvare un galleggiante nel vostro SharedPreferences te stesso:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putFloat("aFloat", 1.2f); 
editor.commit(); 

e quindi recuperare il galleggiante come questo :

float someFloat = prefs.getFloat("aFloat", 0.0f); 
+2

Aha! Quindi c'è un uso per questo! Sebbene avessi ancora voglia di getFloat() ho provato a lanciare la stringa prima di lamentarmi. –

+0

Proprio come una questione di interesse senza essere in grado di mettermi alla prova adesso, ti permetterà di memorizzare 1.2 come float o devi dichiararlo esplicitamente come un float con 1.2f – zgc7009

+0

@ zgc7009 whits, sì, certo che deve essere 1.2f. Grazie, l'ho corretto. – Ahmad