4

という方法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

4

2 に答える 2

0

試す

return Long.valueOf(prefs.getString("interval", INTERVAL_NEVER));
于 2013-07-27T18:49:57.797 に答える
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_NEVERas として宣言したくない場合は 、String

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

prefs.getString("interval", "" + INTERVAL_NEVER));
于 2013-07-27T18:51:25.873 に答える