android doinbackground toast,android – AsyncTask方法调用中的Toast问题

嘿大家,

我有一个AsyncTask将一些数据发布到服务器.它通过调用我从doInBackground编写的静态方法来实现.当我运行AsyncTask时,我发送调用execute()的活动的上下文,我将其发送到我的静态方法,因为如果在与服务器通信时出现问题,它需要它来制作Toast.但是,当在静态方法中进行Toast时,我收到此错误:

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): FATAL EXCEPTION: AsyncTask #1

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): java.lang.RuntimeException: An error occured while executing doInBackground()

04-21 12:49:16.689: ERROR/AndroidRuntime(2123):at android.os.AsyncTask$3.done(AsyncTask.java:200)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask.run(FutureTask.java:138)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.lang.Thread.run(Thread.java:1019)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at android.os.Handler.(Handler.java:121)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at android.widget.Toast.(Toast.java:68)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at android.widget.Toast.makeText(Toast.java:23

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at com.microogle.dev.util.ServerConnections.PostToLoginPage(ServerConnections.java:36)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at com.microogle.dev.Whiteboard.WhiteboardLogin$LoginTask.doInBackground(WhiteboardLogin.java:150)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at com.microogle.dev.Whiteboard.WhiteboardLogin$LoginTask.doInBackground(WhiteboardLogin.java:1)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at android.os.AsyncTask$2.call(AsyncTask.java:185)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)

04-21 12:49:16.689: ERROR/AndroidRuntime(2123): ... 4 more

其后是泄漏的窗口错误.我假设这是因为静态方法中传递给Toast的上下文出错. AsyncTask是:

private class LoginTask extends AsyncTask {

private WhiteboardLogin activity;

private Context callingContext;

private ProgressDialog dialog;

private String user, pass;

private boolean sendIntent = true, loginError = false, populateError = false;

public LoginTask(WhiteboardLogin activity, String user, String pass, Context callingContext){

this.activity = activity;

this.user = user.trim();

this.pass = pass.trim();

this.callingContext = callingContext;

}

@Override

protected Void doInBackground(Void... params) {

ArrayList nameValuePairs = new ArrayList();

nameValuePairs.add(new BasicNameValuePair("user",user));

nameValuePairs.add(new BasicNameValuePair("pass",pass));

sessionUser = user;

sessionPassword = pass;

//Posts the username and password to the login page and toasts an error if the login doesn't work

if(ServerConnections.PostToLoginPage(callingContext, nameValuePairs, activity.getString(R.string.loginPageURI)) == 1){

dialog.dismiss();

sendIntent = false;

loginError = true;

publishProgress();

return null;

}

else{

userDataList = populateUserDataList(callingContext, user,pass);

if(userDataList == null){

dialog.dismiss();

sendIntent = false;

populateError = true;

return null;

}

}

return null;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值