3mp*_*tri 3 android opengl-es oncreate android-fragments
我已经创建了OpenGLRenderer.java类并在其中放置了一些代码,显示没有错误.然后我将此代码放在RoomFragment.java片段中创建一个视图:
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);
}}
Run Code Online (Sandbox Code Playgroud)
但我得到了
构造函数GLSurfaceView(RoomFragment)未定义
和
对于RoomFragment类型,方法setContentView(RoomFragment)未定义
错误.这些方法不是在头文件中实现的吗?我猜这是因为这不是一个活动,而是一个仅在按钮点击前一个片段(在主活动菜单选择中处于活动状态)时才有效的片段.
我该怎么做?如何在片段层中创建GLSurfaceView?
该GLSurfaceView需要进行相关的Activity给予它Context.Fragment不会从Activity它的外观延伸,你试图GLSurfaceView从它内部创建一个权利.
此外,setContentView必须从一个调用Activity,基本上你所说的是'我希望这个活动以**View告诉它的方式显示'.因此,您必须从Activity本身调用该方法.
尝试将GLSurfaceView内部Activity放在你调用它的地方Fragment,或者使用Fragment's getActivity()方法来检索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);
}}
Run Code Online (Sandbox Code Playgroud)
我不确定这是不是你要找的,让我知道它是否有效!
| 归档时间: |
|
| 查看次数: |
3667 次 |
| 最近记录: |