01-02 01:02:04.648: E/AndroidRuntime(1337): FATAL EXCEPTION: GLThread 10
01-02 01:02:04.648: E/AndroidRuntime(1337): java.lang.IllegalArgumentException: Make sure the SurfaceView or associated SurfaceHolder has a valid Surface
01-02 01:02:04.648: E/AndroidRuntime(1337):  at com.google.android.gles_jni.EGLImpl._eglCreateWindowSurface(Native Method)
01-02 01:02:04.648: E/AndroidRuntime(1337):  at com.google.android.gles_jni.EGLImpl.eglCreateWindowSurface(EGLImpl.java:87)
01-02 01:02:04.648: E/AndroidRuntime(1337):  at android.opengl.GLSurfaceView$DefaultWindowSurfaceFactory.createWindowSurface(GLSurfaceView.java:718)
01-02 01:02:04.648: E/AndroidRuntime(1337):  at android.opengl.GLSurfaceView$EglHelper.createSurface(GLSurfaceView.java:975)
01-02 01:02:04.648: E/AndroidRuntime(1337):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1335)
01-02 01:02:04.648: E/AndroidRuntime(1337):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)我每次开机只要一选择这个launcher就会报这样的错,可是把他的错误提示框点掉之后程序依旧可以运行,没什么不对的。直到下一次开机选择这个launcher就还会有这个错误,Make sure the SurfaceView or associated SurfaceHolder has a valid Surface这个错误怎么解决啊,坐等大神。

解决方案 »

  1.   

    手机中有一个设置,叫作强制使用GPU渲染,打开或者关掉试试,但不保证是这里的原因……
    你这是写程序出错呀?还是你手机出错呀?没弄明白~这LOG只是说明OPENGL渲染出错……
      

  2.   

    我的是2.3的系统,没GPU渲染。应该不怪它。这是我写的一个launcher,用了opengl es,可是运行调试什么的都不会报错,就是每次开机我只要一选择这个launcher就会来个这样的错误,我把他错误弹出点击后,我的程序还是可以运行,3D效果也出的来。在开机第一次运行的时候莫非是需要什么支持?
      

  3.   

    这个问题异常是说我没有有效的suface?这不科学啊。
      

  4.   

    IllegalArgumentException这个异常就是参数不对引起的异常
      

  5.   

    要在surfaceCreated 之后才把surfaceHolder传到系统函数进去。
    surfaceChanged之后也要及时更新。
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
    int height) {
    surfaceHolder =  holder ;
    Log.v(TAG, "surfacedChanged " + "width="+width+"height="+height+"Format="+format) ;

    } public void surfaceCreated(SurfaceHolder holder) {
    Log.v(TAG, "surfacedCreated " ) ;
    surfaceHolder =  holder ;
    }
      

  6.   

    请问这个问题的代码该怎么写?surfaceHolder =  holder ;这个surfaceholder 也没有别的地方调用呀!