2011-12-19 8 views
5

フラグメントのビットマップを使用していますが、フラグメントのonDestroy()メソッドでbitmap.recycle()を呼び出します。しかし、私は例外android fragment bitmap.recycle()を呼び出す場合

E/AndroidRuntime(4869): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected]

を得るかなりの数回は、私はまた、フラグメントのonDestroyView()方法でこれをやってみましたが、それでも同じ例外が発生しました。

誰もが、私はあなたがonDestroyViewかonDestoryのいずれかでリサイクルしていますが、あなたのOnCreateイベントで再びあなたのビットマップを作成していることを確認したりすることができますbitmap.recycle()

+0

これを参照してください:http://stackoverflow.com/questions/4959485/bitmap-bitmap-recycle-weakreference-and-garbage-collector –

答えて

0

を呼び出す必要がありフラグメントのライフサイクルの最高の舞台であるものをお勧めできますonCreateView ..再び同じビットマップ参照を使用しているので、リサイクル例外がスローされています。したがって、フラグメントを作成するときに再度ビットマップを作成する必要があります。また、ビットマップがすでにリサイクルされているかどうかを確認するためにisRecycled()をチェックすることもできます。

0
012これを解決しました。

私は、/ eachフラグメントのコンテンツビューのすべての子ビューを削除しました。 すべての子ビューが各フラグメントから削除された後、私はフラグメントをポップしました

私は今現在行っているように各フラグメントの 'OnDestroy'でビットマップをリサイクルしました。

+0

コードを投稿できますか? – Kenshin

関連する問題