2010-02-11 5 views
0

몇 가지보기가 포함 된 활동이 있습니다. 그 중 하나는 GLSurfaceView입니다. 이 GLSurfaceView는 내 Activity의 다른 뷰 (ListViews, EditTexts 등)에서 선택된 것을 기반으로 예쁜 3D 효과를 표시합니다. 내가 겪고있는 문제는 내 GLSurfaceView가 Activity에서 완전히 초기화되었는지 알 수 없다는 것입니다.GLSurfaceView가 활동에서 완전히 초기화되면 어떻게 알 수 있습니까?

setContentView() 메서드 바로 뒤에 내 Activity의 onCreate() 메서드에서 GLSurfaceView에 내 그래픽 데이터를 전달하려고 시도하기 시작했습니다. 이것은 에뮬레이터에서 잘 작동하지만 여러 장치에서 아직 작성되지 않은 개체에 액세스하려고 시도 할 때 null 포인터 예외가 발생하여 실패합니다. 내 견해가 아직 팽창되어 있지 않았기 때문에 내 장치에서 뷰를 팽창시키는 데 시간이 오래 걸릴 것으로 생각했습니다.

나는 물건의 순서를보기 위해 약간의 로깅을 흩어 놓았다. 그리고 GLSurfaceView의 onSurfaceCreated 메소드가 GLSurfaceView의 onFinishInflate 메소드 후에 잘 호출된다는 것을 알았다.

이제 내 GLSurfaceView의 onSurfaceCreated 메소드가 호출되어 내 GLSurfaceView에 무엇을 그려야하는지 안전하게 알릴 수 있도록 내 Activity에서 결정하는 좋은 방법을 찾고 있습니다.

답변

0

하위 클래스 GLSurfaceView ("다른 뷰와 마찬가지로 GLSurfaceView의 하위 클래스를 만들고 적절한 메서드를 재정의합니다."). SurfaceHolder.Callback을 Surf enter code here aceHolder와 함께 등록 할 수도 있습니다.이 표면은 보통 SurfaceViews과 함께 작동하여 표면이 만들어 졌는지 알 수 있습니다.

관련 문제