一篇简单的代码出错分析

今天犯了一个很低级的错误,错误代码就在上图中,结果照着上面所示的写完,一运行,程序崩溃了,查看log日志错误如下:

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.CollapsingToolbarLayout.setTitle(java.lang.CharSequence)' on a null object reference
        at com.example.wechattest.FriendsActivity.onCreate(FriendsActivity.java:33)
        at android.app.Activity.performCreate(Activity.java:7009)
        at android.app.Activity.performCreate(Activity.java:7000)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

之前没想太多,好像自己把setContentView方法上面的两行代码移到setContentView之后就恢复正常了,就这样没想明白后续还会遇到此类问题,如果没真正弄懂那如果以后遇到这个问题,但是代码量比较大又复杂的话,自己估计就整不好了,为自己的这个不爱多去思考的行为深感惭愧

这个错误简单点说就是空指针异常,如果不先加载布局就通过findViewById获取实例,那么获取到的实例实际就为空,那么调用对应的方法的时候自然会提示空指针异常

撸码不易,相信大家在日常写代码过程中出错是很普遍的,这时候解决问题的思路就很重要:

首先我们发现程序运行出错的时候一定不要紧张,要冷静,这时候能想到的肯定是打开Log日志查看具体的错误原因,另外一定要细心看英文提示的错误,不懂的话可以挨个单词查,弄清楚原因之后想想该从哪方面去解决,如以上的问题我们想到的是collapsingToolbar对象为空,所以调用setTitle方法的时候自然会提示出错,为了验证猜想,我们可以在findViewById()方法之后用Log.d方法打印出collapsingToolbar的值,看是否为空,还可以用断点调试的方法在该行代码处设置断点,观察对应的对象值

猜你喜欢

转载自blog.csdn.net/weixin_42146999/article/details/81880615