How does one declare the type of an Android preference?
android, classcastexception, preferences
Solution
In your preferences xml you can add an option `android:numeric` with the value `"integer"`. This way the user should only be able to enter a valid integer value.
When loading the setting you should try to parse it to a number yourself (as all values are stored as Strings (@mbaird below)):
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
}
Problem
I have a preferences.xml that looks like this: ``` <?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> ``` When I do sp.getString("sample", "3.0"), it works fine and returns a string, but it shouldn't be a string, it should be a float. Running sp.getFloat("sample", 3.0f) throws a ClassCastException because it is a string. What should I put in the XML so that the preference is stored as a float?