2012-07-26 47 views
3

我創建了OpenGLRenderer.java類並在其中放置了一些代碼,顯示沒有錯誤。然後我把這個代碼用於創建RoomFragment.java片段的觀點:Android中的OpenGL onCreate片段視圖

public class RoomFragment extends Fragment { 

/** Called when the fragment is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    GLSurfaceView view = new GLSurfaceView(this); 
    view.setRenderer(new OpenGLRenderer()); 
    setContentView(this); 
}} 

但是我卻越來越

構造GLSurfaceView(RoomFragment)是未定義

方法setContentView(RoomFragment)未定義類型RoomFragment

錯誤。這些方法不是在頭文件中實現的嗎?我猜測這是因爲這不是一個活動,而是一個片段,它只在按下前一個片段的按鈕時激活(它在主要活動菜單選擇中處於活動狀態)。

我該如何解決這個問題?如何在碎片圖層中創建GLSurfaceView?

回答

5

GLSurfaceView需要與Activity相關,方法是給它一個ContextFragment不會從Activity延伸出來,從它的外觀來看,您正試圖從裏面創建一個GLSurfaceView

此外,setContentView必須從Activity被調用,基本上你的意思是「我要顯示的方式**View這個活動告訴它」。因此您必須從活動本身調用該方法。

嘗試要麼把GLSurfaceViewActivity從您撥打Fragment,或使用FragmentgetActivity()方法來檢索它綁定到Activity內。

第二個解決方案最終會看起來像這樣:

public class RoomFragment extends Fragment { 

/** Called when the fragment is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    GLSurfaceView view = new GLSurfaceView(this.getActivity()); 
    view.setRenderer(new OpenGLRenderer()); 
    this.getActivity().setContentView(view); 
}} 

我不知道如果這就是你要找的內容,讓我知道,如果它的工作原理!

+0

我明白:)爲了獲得上下文,我必須從片段中取出一步。現在好了,謝謝! – 3mpetri 2012-07-26 13:17:45