我如何知道GLSurfaceView何时从活动中完全初始化?

时间:2010-02-11 19:29:51

标签: android android-activity

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

我开始只是在setContentView()方法之后不久尝试将我的图形数据传递到我的Activity的onCreate()方法中的GLSurfaceView。这在模拟器上运行良好,但在几个设备上,由于尝试访问尚未构建的对象而导致空指针异常失败。我认为这是因为我的观点还没有膨胀,也许在我的设备上膨胀视图需要更长的时间。

我分散了一些日志记录只是为了查看事物的顺序,我发现在GLSurfaceView的onFinishInflate方法之后我的GLSurfaceView的onSurfaceCreated方法被很好地调用。

所以现在我正在寻找一种很好的方法来确定我的活动时我的GLSurfaceView的onSurfaceCreated方法被调用,以便我可以安全地告诉我的GLSurfaceView要绘制的内容。

1 个答案:

答案 0 :(得分:0)

子类GLSurfaceView(“要处理一个事件,您通常会将GLSurfaceView子类化并覆盖适当的方法,就像使用任何其他视图一样”)。您也可以使用Surf [{1}} aceHolder注册一个SurfaceHolder.Callback - 与常规enter code here一起使用,以了解其表面何时创建。