1

ライブ壁紙を作成していて、ユーザー設定を追加しようとしています。私がこれを持っている場合:

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

完全に無関係な行でアプリを実行すると、ClassCastExceptionが発生します。

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

「drawType=」で始まる行をコメントアウトすると、例外は発生せず、アプリは正常に動作します(ユーザー設定が何もしなくても)。

誰もがこれを説明できますか、それは意味がないようです。私のコードのより多くの部分が必要な場合は、喜んで提供します。ありがとう。

編集:スタックトレースを取得する方法がわからないので、役に立たないリスクがありますが、ここに私のログキャットがあります:

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)
4

2 に答える 2

1

ルームメイトと私は、コードを見直して、「コンピューターを再生」しました。ArrayListを「Triangle」で埋めようとする前に古い「Line」がクリアされていなかったため、キャストエラーが発生しました。いつものように、私は愚かであると同時に安心していると感じます。皆さんの助けに感謝します。

于 2011-02-02T05:47:45.390 に答える
0

これは完全に無関係な行であると述べているにもかかわらず、drawTypeを設定にあるのと同じ文字列に具体的に設定することをお勧めします。

それでも失敗する場合は、polyListが少なくともdrawTypeの副作用によって踏みにじられていると考えなければなりません。

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

于 2011-02-02T03:10:30.690 に答える