SharedPreferences.getFloat()的重点是什么

Mol*_*Ice 10 android android-preferences sharedpreferences

该方法getFloat()用于从android的SharedPreferencesAPI中提取浮点值.但是,在xml中EditTextPreference,即使定义了数字,也始终存储字符串值.

人们会期望getFloat()自动返回这个,但它抛出一个ClassCastException,我们必须使用Float.parseFloat(SharedPreferences.getString())来获得这个值.

是不是没有用,getFloat()或者我在这里遗漏了什么?

Ahm*_*mad 7

方法getFloat()的存在是从android的SharedPreferences API中提取浮点值.

是.

但是,在xml中,EditTextPreference始终存储字符串值,即使已定义数字也是如此.

我想你在这里混淆了一些东西.您设置的SharedPreferences等于a上的元素PreferenceScreen.

PreferenceScreen's将所有值保存到您的中SharedPreferences并且确实EditTextPreferences无法保存浮动,但是您可以将浮动保存到您SharedPreferences自己:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putFloat("aFloat", 1.2f);
editor.commit();
Run Code Online (Sandbox Code Playgroud)

然后像这样检索浮点数:

float someFloat = prefs.getFloat("aFloat", 0.0f);
Run Code Online (Sandbox Code Playgroud)

  • 啊哈!所以它有用!虽然我仍然希望getFloat()在抱怨之前先尝试转换字符串. (2认同)