Android SharedReferences getFloat返回ClassCastException并强制关闭
我想从首选项中获取一个浮动。当用户未输入任何内容时,此功能正常工作,但在框中输入8.23并保存时,应用程序会在下一次启动时崩溃 MainActivity.java:Android SharedReferences getFloat返回ClassCastException并强制关闭,android,sharedpreferences,Android,Sharedpreferences,我想从首选项中获取一个浮动。当用户未输入任何内容时,此功能正常工作,但在框中输入8.23并保存时,应用程序会在下一次启动时崩溃 MainActivity.java: float hourly_rate; SharedPreferences userdata; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(
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:
当我删除getFloat行时,应用程序不会强制关闭。这个问题可能是相同的:。它可能会解决您的问题。EditTextPreference将其内容存储为字符串
Float.parseFloat(String)
可能对您很有用-在preferences.getString(…)
中-除非您编写自己的FloatPreference,将文本输入存储为Float。您的logcat的输出是什么?出现什么错误?EditTextPreference将其内容存储为字符串Float.parseFloat(String)
可能对您很有用-除非您编写自己的FloatPreference
将文本输入存储为Float。hourly_rate=Float.parseFloat(userdata.getString(“hourly_rate”,“0”)
修复了这个问题,但是这样做不就不必要了吗?或者,可能只是在你设置代码中的值时才用于私有(用户看不见)首选项。是的,这是一个重复的问题。事实上,harism是比你更早为我解决这个问题的人,但是这个链接也会为我解决这个问题。究竟为什么存储原始类型作为首选项不是一个标准功能?
<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>