我在51CTO的第一篇博客--关于6个小时调试一个小类
因为要用android开发一个网站的WCF程序,所以今晚花了6个小时来调试一个小类..
开始的时候以为是刚接触android,就觉得问题是发生在android的配置或有关的问题上..
但是后来才发现,问题原来只是发生在一条java语句:
类变量在声明初始化的时候不能调用其他方法!
错误代码如果:
public class SelectedActivity extends Activity { private Button btnMycourse; private Button btnCourseId; private Button btnCourseDetail; private Button btnMyJob; private Button btnJobId; private Button btnJobDetail; private Button btnClassNumber; private Intent it = super.getIntent(); private String session = it.getStringExtra("session"); private String userName = it.getStringExtra("userName"); @Override protected void onCreate(Bundle savedInstanceState) { ...
然后修改了10、11和12行的代码程序就正常运行了:
public class SelectedActivity extends Activity { private Button btnMycourse; private Button btnCourseId; private Button btnCourseDetail; private Button btnMyJob; private Button btnJobId; private Button btnJobDetail; private Button btnClassNumber; private Intent it; private String sessionID ; private String userName; @Override protected void onCreate(Bundle savedInstanceState) { it = super.getIntent(); sessionID = it.getStringExtra("sessionID"); userName = it.getStringExtra("userName");
对于一个用了一年多java的人来说,这是一个低级中的低级错误!
所以为了给自己一个小小惩罚,罚自己做了100俯卧撑(虽然平时锻炼也有做,
不过那都是做完一组就休息好再做另一组的,今晚是做完一组休息几秒就立刻做)
至于为什么要写这篇博客,原因就是让自己好好记住这个教训,避免以后不犯这种错误..
也好让大家鄙视一番..能让自己有一个好的总结。
小小总结如下:
1):发生错误时,要找准错误的定位,而不是凭着自己的感觉,例如这次的错误提示:
因为ADT日志不能复制(可能是我不会复制),所以截图,可能截图看不清..
我当时看到了第一句:“java.lang.RuntimeException: Unable to Start activity ComponentInfo{...” 以为就是关于activity注册问题或者配置错了,就一直往这个方向
调试..
却忽略了下面的一句:“Cause by :java.lang.NullPointerExection at com.example.scaucs.net.SelectedActivity.<init>SelectedActivity.java
其实这一句才是问题根源所在!
2)不要一味地追求代码简化,其实开始的时候程序是正常的,后来我想简化代码就直接在
声明的地方用其他方法赋值了,6个小时就这样浪费了。
更多相关文章
- android 程序的签名
- android开发教程(十一)——android应用程序基础
- Android(安卓)productFlavors 差异化打包
- “adb不是内部或外部命令,也不是可运行的程序或批量文件“
- android 完全退出自己的应用程序
- 解决OPPO手机adb调试找不到设备(Win8系统)
- android 系统权限大全
- 为什么我们可以在非UI线程中更新UI
- 基于web的android图像处理示例(Win7+Apache+PHP+Matlab+Android)