2012-02-06 30 views
0

私はゲームを開発していますが、プレイヤーが失敗したりレベルを完了したときにプレーヤーのスコアとボタンを表示するアクティビティを開始しようとしていますが、NullPointerExceptionがスローされます。ここに私のコードです。どうしたの。Android:OpenGLレンダラーからアクティビティを開始

public class MyRenderer extends Activity implements Renderer { 
    @Override 
public void onDrawFrame(GL10 gl) { 
     ............... 
     if(..............) startActivity(new Intent("android.intent.action.RESTART")); 
     ............... 
     } 
    } 


    <activity 
     android:name=".Restart" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"> 
     <intent-filter> 
      <action android:name="android.intent.action.RESTART" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

答えて

1

メソッドonDrawFrameはスレッドGLThreadで動作します。非UIスレッドからアクティビティを開始することはできません。

1

アクティビティでstartActivity()を使用できます。 GLSurfaceViewはビューです。

これを試してみてください:

public class YourRenderer implements GLSurfaceView.Renderer{ 
..... 
..... 
private Context mContext; 

public YourRenderer(Context context){ 
mContext = context; 
} 

public onDrawFrame(Gl10 gl){ 
if(some statement){ 
Intent intent = new Intent(...); 
mContext.startActivity(intent); 
} 
関連する問題