我有一个发布JSON数据的异步任务,我发布的Web服务将其作为电子邮件发送。我现在有一个问题是电子邮件被发送了两次。当任务在doInBackground上时,我已经禁用了按钮并添加了进度对话框。我似乎无法找到它发送两次的错误。在我的日志中,它只返回一次成功。
以下是异步任务的代码
public class postEmail extends AsyncTask<String, String, String>{
String response;
@Override
protected void onPostExecute(String s) {
pd.dismiss();
if (response.contains("success")) {
Toast.makeText(getActivity(), "Message successfully sent", Toast.LENGTH_LONG).show();
Log.d("success", "sent success");
clearEditText();
editSubject.requestFocus();
}
else {
Toast.makeText(getActivity(), "Sending Failed. Kindly check your internet connection", Toast.LENGTH_LONG).show();
}
super.onPostExecute(s);
}
@Override
protected void onPreExecute() {
pd = new ProgressDialog(getActivity(), R.style.MyTheme);
pd.setCancelable(false);
pd.setMessage("Sending...");
pd.setProgressStyle(android.R.style.Widget_ProgressBar_Small);
pd.show();
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
jsonParser = new JSONParser();
Log.d("POST EMAIL", "SENDING");
String finalEmail = "qcqpsd.admin@stluke.com.ph";
String finalCcEmail = "nolascolee@gmail.com";
String postUrl = "http://qpsdev.stluke.com.ph/webservice/qpsSendEmail";
List<NameValuePair> post_email = new ArrayList<NameValuePair>();
post_email.add(new BasicNameValuePair("email", finalEmail));
post_email.add(new BasicNameValuePair("subject", finalSubject));
post_email.add(new BasicNameValuePair("message", finalMessage));
post_email.add(new BasicNameValuePair("sender", finalSender));
post_email.add(new BasicNameValuePair("cc", finalCcEmail));
response = jsonParser.getJSONFromPostURL(postUrl, post_email);
Log.d("result", response);
return result = jsonParser.getJSONFromPostURL(postUrl, post_email);
}
}
这是按钮的代码:
btnSend.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
getValue();
if(isConnected)
{
finalizeString();
new postEmail().execute();
}
else{
Toast.makeText(getActivity(), "Please check your connection",Toast.LENGTH_LONG).show();
}
}
});
答案 0 :(得分:1)
response = jsonParser.getJSONFromPostURL(postUrl, post_email);
Log.d("result", response);
return result=jsonParser.getJSONFromPostURL(postUrl,post_email);
在这里你发送文件两次,更改返回部分并且不再调用方法mate