Android Button按钮在线程中setEnable()会抛出异常

NLimit 2020-04-26 04:18:19
thread = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 100; i ++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
break;
}
determinate.setProgress(i);
}
load.setEnabled(false);
}
});
thread.start();

其中load.setEnabled(false);会抛出异常,android.util.AndroidRuntimeException: Animators may only be run on Looper threads
而如果是load.setEnabled(true);则不会抛出异常
求解释
...全文
809 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
NLimit 2020-04-29
  • 打赏
  • 举报
回复
好的记住了 感谢各位
编码行者 2020-04-29
  • 打赏
  • 举报
回复
更新视图必须在主线程
小哈ha 2020-04-29
  • 打赏
  • 举报
回复
Android视图的操作,不能在线程中操作,记住了
z1341530 2020-04-27
  • 打赏
  • 举报
回复
厉害111111
Write_BUG小能手 初级 2020-04-27
  • 打赏
  • 举报
回复
runonuithread
初学者liwd 2020-04-27
  • 打赏
  • 举报
回复
不错,适合我们看
kaichao1060 2020-04-27
  • 打赏
  • 举报
回复
我的也是,用不了
剑笑了 2020-04-27
  • 打赏
  • 举报
回复
方法一:把你的setEnable用handler处理。handler的looper需要运行在主线程(默认) 方法二:给setEnable包裹一个runOnUIThread()
six周 2020-04-26
  • 打赏
  • 举报
回复
刷新UI要在主线程,你这还是在子线程
usecf 2020-04-26
  • 打赏
  • 举报
回复
增加Looper.prepare()和Looper.loop() 在你load.setEnabled(false);语句 Looper.prepare(); load.setEnabled(false); Looper.loop();
键盘舞者113 2020-04-26
  • 打赏
  • 举报
回复
你创建Button添加入 父视图时的线程要与 你刷新Button 时的线程一致

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧