在我的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);