Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:从GLSurfaceView返回主要活动_Java_Android_Opengl Es_Android Activity_Renderer - Fatal编程技术网

Java Android:从GLSurfaceView返回主要活动

Java Android:从GLSurfaceView返回主要活动,java,android,opengl-es,android-activity,renderer,Java,Android,Opengl Es,Android Activity,Renderer,我不了解我的主要活动和OpenGL渲染器之间的流程 当我的应用程序启动时,用户将看到一个非常漂亮的布局,我用一个写着“开始渲染”的按钮制作了这个布局。当用户单击该按钮时,他/她将被转移到一个渲染器视图,该视图绘制了一幅非常棒的图片。然后,当图片完成后,我想返回主屏幕(带按钮的屏幕),但我不知道如何返回 我试着从GLRenderer调用setContentView(R.layout.activity_run),但显然不起作用。然后我尝试创建一个函数Run.endRendering(),这是一个静态

我不了解我的主要活动和OpenGL渲染器之间的流程

当我的应用程序启动时,用户将看到一个非常漂亮的布局,我用一个写着“开始渲染”的按钮制作了这个布局。当用户单击该按钮时,他/她将被转移到一个渲染器视图,该视图绘制了一幅非常棒的图片。然后,当图片完成后,我想返回主屏幕(带按钮的屏幕),但我不知道如何返回

我试着从GLRenderer调用setContentView(R.layout.activity_run),但显然不起作用。然后我尝试创建一个函数Run.endRendering(),这是一个静态方法,从GLRenderer内部调用。Run.endRendering()本应调用setContentView(R.layout.activity_Run),希望随后将视图传输回主屏幕,但由于R.endRendering()是一个静态方法,因此它无法调用setContentView()的非静态方法

所以现在我完全迷路了。有人能解释一下这个问题吗

这些是我的骨架

主要活动:

公共类运行扩展活动
{
私人GLSURFACHEVIEW GLSURFACHE;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u运行);
//在这里,我与用户的主布局视图混乱
//当他/她点击按钮时
//他/她将被转移到opengl视图
//点击按钮:
glSurface=新的GLSurfaceView(本);
setRenderer(新的GLRenderer());
setContentView(glSurface);
}
}
和渲染器:

public类GLRenderer实现渲染器
{
//onSurfaceCreated、onDrawFrame、onSurfaceChanged等。
//动作发生在这里,我想从这里回到
//创建此渲染器的主要活动。
}

您可以做的一件事是将GLSurfaceView作为该活动布局的一部分。 活动的UI线程保持运行。在其中创建一个处理程序,负责从布局中删除GLSURFACHEVIEW并显示正常的非opengl视图

Handler mainHandler = new Handler() {
    public void handleMessage(Message msg) {
         // remove surfaceview from layout and show non-opengl views
    }
};
然后可以将活动的引用(可能使用接口)传递给GLRenderer。我可以打电话给你

activity.mainHandler.sendMessage(msg)

使用两个活动,一个用于主活动,一个用于开放式总账。