0

ゲームをマルチタスクフレンドリーにしようとしていますが、画面をオフにしてからオンに戻したり、ゲームを前後に移動したりすると、コードのこの部分を指すnullポインター例外が発生します。

GLES20.glUniformMatrix3fv(mTextureMatrixHandle, 1, false, render.mTexMatrix, 0);

super.onResume()以外には何もありません。およびmGLSurfaceView.onResume(); onResume()メソッドの場合とonPause()の場合は同じですが、onResumeではなくonPauseを使用する点が異なります。これを修正する方法はありますか?

4

1 に答える 1

0

アクティビティが再び開始されたときに、オブジェクトが再作成されていることを確認する必要があります。これらの変数はどこで初期化されますか? この種のエラーの典型的なケースは、オブジェクトをグローバル変数に格納する場合です。アクティビティが再度作成されると、それらは null になります。

したがって、mTextureMatrixHandle、render、render.mTexMatrix のどれが null であるかを確認します。null の場合は再作成します。

一般に、アクティビティの作成時に復元されるデータに依存しないでください。そのため、グローバル変数を使用せず、インテントを介して渡されたデータのみに依存してください。本当にグローバル データを使用したい場合は、リセットされる可能性があることを認識し、必要に応じて再作成する必要があります。

于 2012-10-02T21:33:35.597 に答える