您的位置:首页 > 其它

我在51CTO的第一篇博客--关于6个小时调试一个小类

2013-05-14 23:58 369 查看
因为要用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个小时就这样浪费了。

本文出自 “不会写代码的猫” 博客,请务必保留此出处http://thatcat.blog.51cto.com/7187551/1200447
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: