时间:2012-08-20 17:49 地点:宁波 描述:在使用Handler实现活动间的数据传递时,犯了一个十分低级的错误,浪费了一个多小时的时间。
//利用消息机制更新进度条 public Handler mHandler = new Handler() { public void handlerMessage(Message msg) { /*if (msg.what == 1) { String url = (String) msg.obj; int length = msg.arg1; //ProgressBar progressBar = ProgressBars.get(url); if (progressBar != null) { // 设置进度条按读取的length长度更新 progressBar.incrementProgressBy(length); if (progressBar.getProgress() == progressBar.getMax()) { Toast.makeText(SpotDownloadActivity.this, "下载完成!", 0).show(); // 下载完成后清除进度条并将map中的数据清空 //LinearLayout layout = (LinearLayout) progressBar.getParent(); //layout.removeView(progressBar); //ProgressBars.remove(url); //downloader.delete(url); //downloader.get(url).reset(); //downloaders.remove(url); } } }*/ Log.e("LOG", "反馈得到的当前数据包下载进度:" + msg.what); } };
关键问题是上面的handlerMessage()方法,正确的写法应该是handleMessage(),而因为这个方法是我手写的,没有通过快捷键的方法实现。导致了错误,就是创建的不是一个继承方法,而是一个自定义的方法。
总结:多看Eclipse,其实这里Eclipse中已经给了我“该方法将永远不被执行的提示”,但我没有注意;还有就是既然是继承方法,就是用快捷键吧,不要自己手写。