在学handler的时候遇到了一个问题,我还是直接贴代码吧,出错的地方就是在注释的几行class MyHandler extends Handler {
public MyHandler() {
}
public MyHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
bar.setProgress(msg.arg1);
if(msg.arg1 != 100) {
mh.post(myThread);
} else {
//下面3行会导致程序报错
// startBtn.setEnabled(true);
// bar.setVisibility(View.GONE);
// Toast.makeText(HandlerDemo.this, "完成", Toast.LENGTH_SHORT).show();
mh.removeCallbacks(myThread);
}
}
}这个小程序就是点击按钮之后启动一个线程,然后让进度条步进,到100的时候用Toast提示
我在oncreate里new了一个HandlerThread对象然后把对象的looper传给这个MyHandler的内部类,但是运行到ProgressBar到100的时候会出错谁能告诉我一下原因??
public MyHandler() {
}
public MyHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
bar.setProgress(msg.arg1);
if(msg.arg1 != 100) {
mh.post(myThread);
} else {
//下面3行会导致程序报错
// startBtn.setEnabled(true);
// bar.setVisibility(View.GONE);
// Toast.makeText(HandlerDemo.this, "完成", Toast.LENGTH_SHORT).show();
mh.removeCallbacks(myThread);
}
}
}这个小程序就是点击按钮之后启动一个线程,然后让进度条步进,到100的时候用Toast提示
我在oncreate里new了一个HandlerThread对象然后把对象的looper传给这个MyHandler的内部类,但是运行到ProgressBar到100的时候会出错谁能告诉我一下原因??
解决方案 »
- 无法获取sd卡上数据
- Android通过手势实现的缩放处理
- 怎么把android OpenGL ES 绘制的图像背景变为透明?
- 关于Intent-Filter的一点问题
- 100分求解:列举出系统中所有的SD(TF)卡,不管是内置的还是外置的
- android 蓝牙串口接收不全~~~郁闷
- 鄙人做了一个小软件,想添加发送短信功能,请问如何调用通讯录发短信,联系人的layout需不需要自己写
- eclipse调试 步进经常跟进到Android.jar或者DexFile.class文件怎么办?
- 空指针
- 请问,以下代码有什么问题?(不能输出 Log.v("AAA", ".............test...1..");)
- 移动网络设置 已启用数据 选项开关的编程实现
- 使用Android Junit Test出现了异常
可以在主线程定义handler hui;
当进度条到100时子线程通过hui.sendMessage叫主线程去更新,而不是子线程直接操作UI。
只有主线程,也就是UI线程才能更新UI(View)。
会出错,我也翻过这个错误,或者用异步处理来解决。
AsychronizedTask 你可以看看sdk.
正确,handler要把消息通知到主线程,由主更新UI
http://blog.csdn.net/stonecao/archive/2011/05/13/6417364.aspx