2015-01-22 3 views
1

Проблема: При открытии игры на устройстве, я получаю сообщение об ошибке и LogCat говорит:ClassCastException: Integer не может быть приведен в Лонг

Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long 
     at android.app.SharedPreferencesImpl.getLong(SharedPreferencesImpl.java:247) 
     at com.lochdownstudios.projectmoney.GamePage.getDouble(GamePage.java:300) 
     at com.lochdownstudios.projectmoney.GamePage.onCreate(GamePage.java:101) 

(Номера строк явно не относятся к этому прямо сейчас) Я понимаю, что проблема в том, что что-то по-прежнему является Integer, но я смущен и не могу найти, где/почему эта проблема возникает.

Код:

public class GamePage extends Activity { 
    protected Double iMoney = 0.0; 
    protected TextView tv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_game_page); 

     money = getDouble(myPreferences, "money", iMoney); 

     tv = (TextView) findViewById(R.id.txtMoney); 
     tv.setText("Money: " + money); 
    } 

    double getDouble(final SharedPreferences prefs, final String key, final double defaultValue) { 
     return Double.longBitsToDouble(prefs.getLong(key, Double.doubleToLongBits(defaultValue))); 
    } 
} 

Примечание: все импорт включаются в фактические файлы.

+1

вы можете показать мне код, где вы положили деньги в prefrences –

+1

вы уверены, что у вас есть длинное значение в ваших sharedprefrences потому что по ошибке вы пытаетесь получить длинное значение, но это ИНТ –

+0

Long.valueOf (INT); –

ответ

1

Посмотрите на источник f класс/метод, сообщаемый в вашем стеке исключений. Такие сайты, как grepcode, могут помочь. Строка 247, SharedPreferencesImpl явно имеет жесткую привязку к типу данных (который может быть Integer), возвращенный для имени предпочтения «деньги».

public long More ...getLong(String key, long defValue) { 
245  synchronized (this) { 
246   awaitLoadedLocked(); 
247   Long v = (Long)mMap.get(key); 
248   return v != null ? v : defValue; 
249  } 
250 } 
Смежные вопросы