我有一个包含多个视图的Activity。其中一个是GLSurfaceView。这个GLSurfaceView根据我的Activity的其他视图(ListViews,EditTexts等)中选择的内容显示漂亮的3D效果。我遇到的问题是我不知道我的GLSurfaceView何时从活动中完全初始化。
我开始只是在setContentView()方法之后不久尝试将我的图形数据传递到我的Activity的onCreate()方法中的GLSurfaceView。这在模拟器上运行良好,但在几个设备上,由于尝试访问尚未构建的对象而导致空指针异常失败。我认为这是因为我的观点还没有膨胀,也许在我的设备上膨胀视图需要更长的时间。
我分散了一些日志记录只是为了查看事物的顺序,我发现在GLSurfaceView的onFinishInflate方法之后我的GLSurfaceView的onSurfaceCreated方法被很好地调用。
所以现在我正在寻找一种很好的方法来确定我的活动时我的GLSurfaceView的onSurfaceCreated方法被调用,以便我可以安全地告诉我的GLSurfaceView要绘制的内容。
答案 0 :(得分:0)
子类GLSurfaceView
(“要处理一个事件,您通常会将GLSurfaceView子类化并覆盖适当的方法,就像使用任何其他视图一样”)。您也可以使用Surf [{1}} aceHolder注册一个SurfaceHolder.Callback
- 与常规enter code here
一起使用,以了解其表面何时创建。