私のセットアップは次のとおりです。ViewPager に 3 つのフラグメントを持つアクティビティがあります。最初と最後の Fragment は xml を介してインフレートされますが、中央の Fragment は SurfaceView から直接派生したクラスです。このクラスには独自のレンダリング スレッドがあります。
プロジェクトは ActionBarSherlock 4.0.2 とサポート ライブラリ V4+ を使用します。
問題: SurfaceView が表示されているときに、他のフラグメントの 1 つにスワイプすると、遷移中にこれらのフラグメントがレンダリングされません。SurcaceView は、他のフラグメントをスクロールする代わりに、以前にレンダリングされたアーティファクト (スミア) を残します。遷移が完了すると、ターゲット Fragment が表示されます。外側のフラグメントの 1 つから中央の SurfaceView へのスワイプは、期待どおりに機能します。
おそらく関連する問題: ターゲットをスワイプする代わりに ActionBar のタブを使用してトランジションを実行すると、フラグメントがまったくレンダリングされません。何もレンダリングされていませんが、コントロールはアクティブです。たとえば、(見えない) ボタンを押すと、割り当てられたアクションが実行されます。これにより、ビューが表示されるように更新されます。
ソースコードを投稿する代わりに、すべてをGitHubに置きました
動作の根本原因を見つけるために多くのことを試みましたが、役に立ちませんでした。
途中でSurfaceView以外の別のフラグメントを使用すると、正常に機能します。
LinearLayout ビューで SurfaceView をラップしても違いはありませんでした。
Thread と SurfaceView 内のすべてのカスタム描画をオフにしても効果はありませんでした。
アイデア、提案、アイデアは大歓迎です。