Domanda

Sto realizzando uno sfondo dal vivo e sto tentando di aggiungere alcune preferenze dell'utente. Se ho questo:

public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
    drawType = prefs.getString("drawtype", "0");
}

Ottengo un ClasscastException al momento dell'esecuzione dell'app su una linea completamente non correlata:

Line front = (Line) polyList.get(polyList.size()-1);

Se commento la riga a partire da "DrawType =" Non ho eccezioni e l'app funziona bene (anche se senza che le impostazioni dell'utente facciano nulla).

Qualcuno può spiegarlo affatto, non sembra avere alcun senso. Se hai bisogno di più parti del mio codice, sono felice di fornirle. Grazie.

EDIT: non sono sicuro di come ottenere una traccia dello stack, quindi a rischio di essere inutile, ecco il mio logcat:

02-01 21:45:26.934: ERROR/AndroidRuntime(4264): FATAL EXCEPTION: main
02-01 21:45:26.934: ERROR/AndroidRuntime(4264): java.lang.ClassCastException: com.nickavv.linear.Line
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at com.nickavv.linear.Wallpaper.draw(Wallpaper.java:127)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at com.nickavv.linear.Wallpaper$WallEngine.drawFrame(Wallpaper.java:95)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at com.nickavv.linear.Wallbaser$AnimationEngine.onSurfaceChanged(Wallbaser.java:45)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at android.service.wallpaper.WallpaperService$Engine.updateSurface(WallpaperService.java:558)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at android.service.wallpaper.WallpaperService$Engine.attach(WallpaperService.java:606)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:817)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:61)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at android.os.Looper.loop(Looper.java:123)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at android.app.ActivityThread.main(ActivityThread.java:4627)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at java.lang.reflect.Method.invokeNative(Native Method)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at java.lang.reflect.Method.invoke(Method.java:521)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-01 21:45:26.934: ERROR/AndroidRuntime(4264):     at dalvik.system.NativeStart.main(Native Method)
È stato utile?

Soluzione

Il mio compagno di stanza e io abbiamo dato uno sguardo nuovo al codice e "giocato al computer" per così dire. L'abbiamo risolto dal fatto che la mia Arraylist non è stata cancellata dalla vecchia "linea" prima di riempirlo con "triangolo", quindi l'errore di fusione. Mi sento sia stupido che sollevato allo stesso tempo, come sempre. Grazie per tutto l'aiuto a tutti.

Altri suggerimenti

Nonostante tu stia affermando che si tratta di una linea completamente non correlata, suggerisco di impostare il disegno specifico nella stessa stringa che si trova nei tuoi pref.

Se ancora fallisce, dovrei pensare che il polilista venga calpestato da almeno un effetto collaterale di tiro.

Se ci riesce, registri ciò che stai tornando da prefs.getString (...) e assicurati che sia quello che ti aspetti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top