2010-02-11 80 views
0

我有一个包含几个视图的活动。其中之一是GLSurfaceView。此GLSurfaceView根据我的Activity的其他视图(ListViews,EditTexts等)中选择的内容显示漂亮的3D效果。我遇到的问题是我不知道什么时候我的GLSurfaceView已从Activity完全初始化。我如何知道GLSurfaceView何时从Activity完全初始化?

我开始时只是在setContentView()方法后不久尝试将我的图形数据传递给我的Activity的onCreate()方法中的GLSurfaceView。这在模拟器上工作得很好,但在几个设备上,这会失败,导致尝试访问尚未构建的对象的空指针异常。我认为这是因为我的观点还没有被夸大,也许充气观点在我的设备上花费的时间更长。

为了查看事物的顺序,我散布了一些日志记录,并且发现我的GLSurfaceView的onSurfaceCreated方法在GLSurfaceView的onFinishInflate方法后被调用。

因此,现在我正在寻找一种很好的方法来确定我的GLSurfaceView的onSurfaceCreated方法已被调用,以便我可以安全地告诉我的GLSurfaceView绘制什么。

回答

0

子类GLSurfaceView(“处理事件,您通常会继承GLSurfaceView的子类并覆盖相应的方法,就像您使用任何其他视图一样”)。您也可以使用Surf enter code here aceHolder注册SurfaceHolder.Callback - 与常规SurfaceViews一起使用以了解其表面是否已创建。