在我的Android应用中,我想切换渲染器中的活动。创建渲染器时,我在构造函数中传递了上下文。在我的渲染器的onDrawFrame函数中:

public MyRenderer(Context ctx){

    this.context=ctx;
}

public void onDrawFrame(GL10 gl) {

    testFlag = renderFrame();


    if(testFlag > 0)
    {
        Intent myIntent = new Intent(this.context, MyActivity.class);
        myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        this.context.startActivity(myIntent);
        testFlag = 0;
        return;
    }


}


这将在我的主要活动中调用onPause(),该活动处理一些OpenGL人员。

切换可用性时出现的错误是:

那时我收到以下错误:

在没有当前上下文的情况下调用OpenGL ES API(每个线程记录一次)

谁能帮帮我吗?我意识到,这是由于不是从OpenGL线程调用OpenGL引起的,但是我该如何解决呢?

从渲染器内部切换活动的正确方法是什么?

最佳答案

我使用了这些来源:
How can I start an Activity from a non-Activity class?
How do I restart an Android Activity
这是在非Activity类的类(例如,Renderer)中切换活动的解决方案

 

    private Context context;
    public MyGLRenderer(Context context)  {
    super();
    this.context = context;
}



      

            Intent myIntent = new Intent(context, MyActivity.class);
            myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            ((Activity)context).finish();
            ((Activity)context).overridePendingTransition(0, 0);
            context.startActivity(myIntent);
            ((Activity)context).overridePendingTransition(0, 0);

07-24 09:46
查看更多