Toast只能在UI线程弹出,解决此问题可以在Toast前后加两行代码,如下所示:
Looper.prepare();
Toast.makeText(getApplicationContext(),"操作失败:"+r.Message,Toast.LENGTH_LONG).show();
Looper.loop();
比如:
runOnUiThread(new Runnable() {
@Override
public void run() {
//加上之前说的代码
}
});
//或者
new Thread(new Runnable() {
@Override
public void run() {
//加上之前说的代码
}
}).start();
错误记录
在Android中不允许Activity里新启动的线程访问该Activity里的UI组件
所有的更新UI操作都需要在主线程(也就是UI线程中完成),而不能在新开的子线程中操作。
更新界面的操作应该在主线程(UI线程)
Dialog是在UI线程的,子线程不能操作,按错误提示先调用Looper.prepare(),完了之后调用Looper.loop()方法就可以。
现在有很多方法可以支持。
参考