SharedPreferences getFloat返回ClassCastException并强制关闭

Iir*_*kka 2 android sharedpreferences

我想从偏好中获得一个浮动.当用户没有输入任何内容时,这可以正常工作,但是当在框中输入8.23并保存它时,应用程序会在下次启动时崩溃.

MainActivity.java:

float hourly_rate;
SharedPreferences userdata;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    userdata = PreferenceManager.getDefaultSharedPreferences(this);
    hourly_rate = userdata.getFloat("hourly_rate", 0.0f);
}
Run Code Online (Sandbox Code Playgroud)

的preferences.xml:

<PreferenceCategory
    android:title="@string/general_preferences_title">
    <EditTextPreference
        android:inputType="numberDecimal"
        android:key="hourly_rate"
        android:title="@string/hourly_rate_title"
        android:summary="@string/hourly_rate_summary" />
</PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)

当我删除getFloat行时,应用程序不会强制关闭.

har*_*ism 5

EditTextPreference将其内容存储为String.除非你编写一个自己的FloatPreference,它将文本输入存储为float,否则Float.parseFloat(String)可能对你有好处 - 除了你之外 -preferences.getString(..)