
分析:
翻译:只有创建视图层次结构的原始线程(通常是主线程或UI线程)才能操作这些视图
即普通的java线程不能直接UI
查找代码,发现是:
new Thread(new Runnable() {
// 内部直接操作了UI对象
})
修改:
第一步,在UI类中定义handler
注:msg.what是消息码,注意一致
private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what == 1) { EditText tipTxt = mainActivity.getTipTxt(); tipTxt.setTextColor(Color.RED); tipTxt.setText("发送文件异常,请检查服务连接情况。"); } } };
第二部,在线程中调用handler.sendEmptyMessage
new Thread(new Runnable() {
// 其他非UI操作业务代码 // 删除涉及UI操作的代码,移动到handler中;调用handler.sendEmptyMessage() handler.sendEmptyMessage(1); })
le.li
浙公网安备 33010602011771号