2010-02-11 76 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一起使用以瞭解其表面是否已創建。