Android: FATAL EXCEPTION 处理

遇到一个非常2的错误,Logcat显示如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ): java.lang.NullPointerException
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.opengl.GLSurfaceView.surfaceCreated(GLSurfaceView.java: 474 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.SurfaceView.updateWindow(SurfaceView.java: 551 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.SurfaceView.dispatchDraw(SurfaceView.java: 348 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewGroup.drawChild(ViewGroup.java: 1708 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java: 1437 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.View.draw(View.java: 6974 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.widget.FrameLayout.draw(FrameLayout.java: 357 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewGroup.drawChild(ViewGroup.java: 1710 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java: 1437 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewGroup.drawChild(ViewGroup.java: 1708 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java: 1437 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.View.draw(View.java: 6974 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.widget.FrameLayout.draw(FrameLayout.java: 357 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java: 1929 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewRoot.draw(ViewRoot.java: 1572 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewRoot.performTraversals(ViewRoot.java: 1290 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.view.ViewRoot.handleMessage(ViewRoot.java: 1921 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.os.Handler.dispatchMessage(Handler.java: 99 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.os.Looper.loop(Looper.java: 143 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at android.app.ActivityThread.main(ActivityThread.java: 4196 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at java.lang.reflect.Method.invokeNative(Native Method)
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at java.lang.reflect.Method.invoke(Method.java: 507 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 839 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 597 )
03 - 14 01 : 11 : 58.006 : E/AndroidRuntime( 14197 ):    at dalvik.system.NativeStart.main(Native Method)

  查了一下午,把所有跟ZView相关的类函数全部注释掉还是这错误,就差重新建工程了。最后发现是自己重写了setRenderer()函数,和GLSurfaceView本身的冲突。。真悲剧,仔细看下面的初始化代码:

?
public ZView(Context context) {
         super (context);
         //init();
          
         // prepare data
         try {
             initMesh();
         } catch (FileNotFoundException e) {
             Log.d(LOG_TAG, "File not found.." + e.getMessage());
             e.printStackTrace();
         } catch (IOException e) {
             Log.d(LOG_TAG, "IOException.." + e.getMessage());
             e.printStackTrace();
         }
          
         // prepare listener
         setGestureDetect( new GestureDetector( new ZGestureListener( this )));
         this .setLongClickable( true );
         setScaleDetect( new ScaleGestureDetector(context, new ZScaleListener( this )));
          
         // prepare renderer
"COLOR: #ff0000" >       setRenderer( new ZRenderer( this ));
         setRenderer(getRenderer());
         getRenderer().addData(ZDataManager.getDataManager().getAllObject3D());
     }

  第一行换成setViewRenderer()解决error

你可能感兴趣的:(Android: FATAL EXCEPTION 处理)