Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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
Android设计-GLsurfaceview渲染类触发新活动_Android - Fatal编程技术网

Android设计-GLsurfaceview渲染类触发新活动

Android设计-GLsurfaceview渲染类触发新活动,android,Android,我有一个一般性的问题,我已经遇到过好几次了。 当我们使用Surfaceview或GLsurfaceview构建视图时,我们将拥有以下类(对于opengl): 主活动类-将具有render和GLsurfaceview。 GLSURFACHEVIEW类-将设置为具有渲染类。 Render类-将渲染绘图的 我的问题是,如果我们在render类中发生了一个事件,并且我们想调用一个新的活动,我们该怎么办 我总是通过将主活动类向下传递给呈现类来解决它,然后如果我需要在主活动中发生什么事情,我就调用MainA

我有一个一般性的问题,我已经遇到过好几次了。 当我们使用Surfaceview或GLsurfaceview构建视图时,我们将拥有以下类(对于opengl):

主活动类-将具有render和GLsurfaceview。 GLSURFACHEVIEW类-将设置为具有渲染类。 Render类-将渲染绘图的

我的问题是,如果我们在render类中发生了一个事件,并且我们想调用一个新的活动,我们该怎么办

我总是通过将主活动类向下传递给呈现类来解决它,然后如果我需要在主活动中发生什么事情,我就调用MainActivity.equals和null,在那里我实现我所需要的。 有没有更好或更优雅的方法?甚至是设计方面?
谢谢。

由于视图始终驻留在活动中,请使用您可以在活动中设置的观察者模式(在java语言中通常称为“侦听器”)(使用与其他视图相同的方法,如button.setOnClickListener)

当然,如果您的视图有多个线程在运行,那么您应该使用一个处理程序来传递事件,以便它们只在ui线程上运行


因此,简而言之,解决方案是扩展GLsurfaceview并为其添加侦听器函数

我会采取观察者的方式。您可以将一个观察者传递给渲染器,并以与当前使用MainActivity几乎相同的方式使用它。但就设计而言,我觉得这更直观。