SharedPreferences getFloat возвращает ClassCastException и принудительно закрывает - PullRequest
2 голосов
/ 11 ноября 2011

Хочу получить поплавок из настроек.Это прекрасно работает, когда пользователь ничего не вводит, но при вводе 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 ]

5 голосов
/ 11 ноября 2011

EditTextPreference хранит свое содержимое в виде строки.Float.parseFloat(String) может быть полезно для вас - в том числе с preferences.getString(..) - если вы не напишите собственную FloatPreference, которая хранит ввод текста в виде числа с плавающей запятой.

2 голосов
/ 11 ноября 2011

Этот вопрос, возможно, тот же: Как объявить тип предпочтения Android? .Это может решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...