Handler handler=new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
final String out=msg.getData().getString("msg", "out");
test.setText(out);
}
}
};
当执行到这一步时发生
E/AndroidRuntime: FATAL EXCEPTION: Thread-2
Process: com.learn.test, PID: 17659
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8743)
at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1597)
new Thread(() -> {
String out=test(input.getText().toString());
Message msg=new Message();
msg.what=1;
msg.obj=out;
Bundle bundle=new Bundle();
bundle.putString("msg", out);
msg.setData(bundle);
handler.handleMessage(msg);
}).start();
这是调用的代码
解决了,应该用handler.sendleMessage(msg)而不是handler.handleMessage(msg);,我真是个憨批