android - SharedPreferences getFloat 返回 ClassCastException 并强制关闭

标签 android sharedpreferences

我想从首选项中得到一个 float 。当用户未输入任何内容时,此方法工作正常,但在框中输入 8.23 并保存时,应用程序会在下次启动时崩溃。

主要 Activity .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);
}

首选项.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 行时,应用程序不会强制关闭。

最佳答案

EditTextPreference 将其内容存储为字符串。 Float.parseFloat(String) 可能对您有好处 - 在 preferences.getString(..) 中 - 除非您编写自己的 FloatPreference 将文本输入存储为 float .

关于android - SharedPreferences getFloat 返回 ClassCastException 并强制关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8086557/

相关文章:

android - 在广播接收器中使用共享首选项

android - Paypal Android SDK 是否支持并行、链式支付?

java - Android GridView 项目在按下时更改图像并更改回来

android - 从 Stripe Android API 获取卡资金参数

android - 提交 SharedPreferences 时发生 StackOverFlowException

Java StreamCorruptedException 试图反序列化从 SharedPreferences Android 读取的对象

android - react-native run-android,无法解析配置 ':classpath' 的所有 Artifact

Android:如何创建可滑动堆栈 View ?

java - 无需启动新 Activity 即可发送数据

android - 共享首选项自动删除