我想从首选项中得到一个 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/