質問: AndroidのSurfaceViewにおける画面遷移方法・記載箇所について教えてください。 Androidでアプリ開発をしています。 クイズゲームを作成しているのですが、MainActivityからSurfaceView(問題表示画面)を呼び出して、そのSurfaceViewから画面遷移をさせようとしてうまく動作できていないように思います。 現在SurfaceView画面で回答ボタンを押されると、「getContext().startActivity(new Intent(getContext(), MainActivity.class));」によりMainActivityを呼び出し、再度SurfaceViewにより新しい問題を表示し、これを5回繰り返したところで「getContext().startActivity(new Intent(getContext(), ResultActivity.class));」によりResultActivityに遷移させようとしています。 MainActivity→SurfaceView→ResultActivity ↑ ↓ ×5 ← ← ← ← ← ← 現在画面遷移処理をSurfaceViewのrunメソッドの最後に記載しています。 回答ボタンが押されたら「drawThread.finish();」「holder.unlockCanvasAndPost(canvas);」によりDrawThreadを終了させSurfaceHolderをアンロックしてから、runメソッド内のwhileループを抜けて画面遷移を行っています。 この記載だと、端末の戻るボタンやタスクボタンを押した場合にも画面遷移してしまいます。 SurfaceViewにおいて画面遷移処理を記載する適切な箇所と画面遷移前にやるべき処理を教えていただきたいです。
回答: そもそもの設計に誤りがありそうです。 まず、ActivityとSurfaceViewは根本的な役割が異なるので「ActivityからSurfaceViewを呼び出す」や「SurfaceViewからActivityに画面遷移する」といった表現に違和感があります。 次の問題を表示するために画面遷移が必要なのでしょうか?Activityが出題する問題の情報を管理し、SurfaceViewで描画する内容を変更した方が実装が簡単になると思います。