2011-02-02 14 views
1

私はライブ壁紙を作成していて、いくつかのユーザー設定を追加しようとしています。私は、このお持ちの場合:PreferencesCodeExceptionの使用時にClassCastExceptionが発生する

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

を私は完全に無関係なライン上のアプリを実行している時にClassCastExceptionが取得:

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

私は「drawType =」私は例外を取得しないで始まる行をコメントアウトした場合と、アプリはうまく動作します(ユーザーの設定が何もしていなくても)。

これは誰でも説明することはできますが、それは意味をなさないと思われます。あなたが私のコードのより多くの部分を必要とするなら、私はそれらを提供して嬉しいです。ありがとう。

EDIT:役に立たないことの危険にさらされて、ここに私の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) 
+2

私たちが探しているスタックトレースである –

+0

というスタックトレースを投稿してください。次のリクエスト - Wallpaper.java:127のような、参照される行のコードを表示できますか?それは既にあなたが投稿した行の1つですか?システムがキャストしようとしている価値を確認できますか? –

+0

Line 127は、私が投稿した2行目です。Line front =(Line)polyList.get(polyList.size() - 1);. polyList.get()は、ポリゴンを返します。私が言ったように、設定がdrawTypeに保存されていないときは、キャストはうまくいく。 – Nick

答えて

1

私のルームメイトと私はコードを見直して、 "コンピュータを演奏しました"。私たちはArrayListが "Triangle"を埋めようとする前に古い "Line"をクリアしていないという事実によってそれを解決しました。つまり、キャストエラーです。私はいつものように、同時に愚かでも安心でもあると感じます。みんな助けてくれてありがとう。

0

あなたは、これは完全に無関係なラインであることを示すにもかかわらず、私はdrawTypeを設定示唆具体的には、あなたのprefsにある同じ文字列に。

まだ失敗するなら、私は、polyListが少なくともdrawTypeの副作用によって踏みつぶされていると思っていると思います。

成功した場合は、prefs.getString(...)から戻ってきたものをログに記録し、それが期待どおりであることを確認します。

+1

drawTypeをその潜在的な値のいずれか( "0"または "1")に手動で設定すると、期待どおり正確に動作します。 Prefs.getString(..)を記録すると、選択した設定項目に応じて「0」または「1」が返されます。 – Nick

+0

もう2つの考え方... polyList.get(polyList.size() - 1).getClass()。getName())とは何ですか?いくつかのメモリがどこかで壊れているように聞こえ、prefs.getString()を呼び出すと問題が隠されてしまいます。ネイティブライブラリ呼び出しとメモリバッファの問題を監視します。 – levis501

関連する問題