时间: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中已经给了我“该方法将永远不被执行的提示”,但我没有注意;还有就是既然是继承方法,就是用快捷键吧,不要自己手写。