求大神看看代码,帮帮我

public void onClick(View view) { new Thread(new Runnable() { @Override public void run() { try { String username = usernameEdit.getText().toString(); String password = passwordEdit.getText().toString(); OkHttpClient client = new OkHttpClient(); RequestBody requestBody = new FormBody.Builder() .add("username", username) .add("password", password) .build(); Request request = new Request.Builder() .url("http://test.ourwechat.com/test/auth.php") .post(requestBody) .build(); Response response = client.newCall(request).execute(); String responseData = response.body().string(); JSONObject object = new JSONObject(responseData); code = object.getInt("code"); if (code ==-1){ Toast.makeText(Login.this,"登录失败",Toast.LENGTH_SHORT).show(); }else if (code == 1){ Intent home = new Intent(Login.this, Homepage.class); startActivity(home); } } catch (JSONException e) { e.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } }).start();
以上是代码
以下是错误日志
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.(Handler.java:200)
at android.os.Handler.(Handler.java:114)
at android.widget.Toast$TN.(Toast.java:348)
at android.widget.Toast.(Toast.java:101)
at android.widget.Toast.makeText(Toast.java:260)
at com.money.Login.Login$1$1.run(Login.java:90)
at java.lang.Thread.run(Thread.java:761)

求大神指出问题

3个回答

不要在子线程中使用toast

wr_848174973
wr_848174973 问问题都不知道把代码格式化以下再贴出来,android不允许在子线程更新ui,使用handler就可以啦
2 年多之前 回复
sw201293
sw201293 回复简单一点随心: runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(Login.this,"登录失败",Toast.LENGTH_SHORT).show(); } });
2 年多之前 回复
sw201293
sw201293 回复简单一点随心: 介面代码不能在非介面线程中运行
2 年多之前 回复
qq_37961932
择忆霖心 不使用toast就正确了对吗?这些代码就可以正常运行了?
2 年多之前 回复
qq_37961932
择忆霖心 我的post请求对吗
2 年多之前 回复

你所有UI操作要放到UI线程。
http://www.2cto.com/kf/201405/304450.html

qq_37961932
择忆霖心 往其详解
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!