SharedPreferences getFloat返回ClassCastException并强制关闭

时间:2011-11-10 21:28:57

标签: 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);
}

的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>

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

2 个答案:

答案 0 :(得分:5)

EditTextPreference将其内容存储为String。 Float.parseFloat(String)可能对您很有用 - 在preferences.getString(..)之内 - 除非您编写一个自己的FloatPreference,它将文本输入存储为float。

答案 1 :(得分:2)

这个问题可能是相同的:How does one declare the type of an Android preference?。它可能会解决您的问题。