[英]Can't create handler inside thread that has not called Looper.prepare() inside Handler()
I am calling a Handler class from a background thread. 我正在从后台线程调用Handler类。 In the Handler class, I am trying to display a toast.
在Handler类中,我尝试显示吐司。 Theoratically it should work flawlessly because Handler is the Queue that forwards the UI tasks to the main UI thread.
从理论上讲,它应该可以正常工作,因为Handler是将UI任务转发到主UI线程的Queue。 However, in my case the I am getting exception.
但是,就我而言,我正在例外。
private void firstTimeLogin() {
final LoginUiThreadHandler loginHandler = new LoginUiThreadHandler();
new Thread(new Runnable() {
@Override
public void run() {
Message m = loginHandler.obtainMessage();
Bundle bund = new Bundle();
bund.putInt("loginResult", 1);
m.setData(bund);
loginHandler.handleMessage(m);
}
}).start();
}
private class LoginUiThreadHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int loginResult = msg.getData().getInt("loginResult");
if(loginResult == 0)
Toast.makeText(getActivity().getApplicationContext(), "Login success", Toast.LENGTH_SHORT).show();
}
}
What am I doing wrong? 我究竟做错了什么?
Replace with - 用。。。来代替 -
LoginUiThreadHandler loginHandler = new LoginUiThreadHandler(Looper.getMainLooper());
instead of- 代替-
LoginUiThreadHandler loginHandler = new LoginUiThreadHandler();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.