SharedPreferences getLong() - > java.lang.String无法强制转换为java.lang.Long。怎么修?

时间:2013-07-27 18:39:24

标签: android exception sharedpreferences long-integer

因此,getLong()的方法SharedPreferences。无法在<long-array>中声明strings.xml。那么我们在哪种情况下使用geLong()?

strings.xml

<string-array name="intervals">
    <item>Never</item>
    <item>Minute</item>
    <item>Fifteen</item>
    <item>Half hour</item>
    <item>An hour</item>
    <item>Half day</item>
    <item>Day</item>
</string-array>
<string-array name="intervalValue">
    <item>0</item>
    <item>60000</item>
    <item>900000</item>
    <item>1800000</item>
    <item>3600000</item>
    <item>86400000</item>
</string-array>

Preferences.xml

<ListPreference
    android:entries="@array/intervals"
    android:entryValues="@array/intervalValue"
    android:key="interval"
    android:summary="@string/summaryUpdaterInterval"
    android:title="@string/titleUpdaterInterval" >

代码:

public long getInterval()
{
    return prefs.getLong("interval", INTERVAL_NEVER);
}

原因:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long

2 个答案:

答案 0 :(得分:0)

尝试

return Long.valueOf(prefs.getString("interval", INTERVAL_NEVER));

答案 1 :(得分:0)

尝试使用:

public long getInterval()
{
    return Long.valueOf(prefs.getString("interval", INTERVAL_NEVER));
}

或那:

public long getInterval()
{
    long value = INTERVAL_NEVER;
    try
    {
        value = Long.parseLong(prefs.getString("interval", "" + INTERVAL_NEVER));
    } catch (Exeption e) { }
    return value;
}

另外,如果您不想将INTERVAL_NEVER声明为String,则 取代

prefs.getString("interval", INTERVAL_NEVER));

prefs.getString("interval", "" + INTERVAL_NEVER));