我用简单的场景调用webservice,它工作正常,但是在处理程序中获得webservice响应后,它多次显示alertdialog。
这是 web 服务调用的代码:
public void callUpdateUserInfo_WS() {
if (NetworkAvailablity.checkNetworkStatus(ProfileScreen.this)) {
// PREPARE URL
Constant.methodURL = "http://admin.tvdevphp.com/goalmachine/update_profile.php";
// PREPARE REQUEST PARAMETER
ArrayList<NameValuePair> requestParaList = new ArrayList<NameValuePair>();
requestParaList.add(new BasicNameValuePair("user_id", Constant.USER_ID));
requestParaList.add(new BasicNameValuePair("first_name", name));
requestParaList.add(new BasicNameValuePair("age",age));
requestParaList.add(new BasicNameValuePair("age_visible", "Yes"));
requestParaList.add(new BasicNameValuePair("parental_status", partentalStatus));
requestParaList.add(new BasicNameValuePair("parental_status_visible", "Yes"));
requestParaList.add(new BasicNameValuePair("marital_status", maritalStatus));
requestParaList.add(new BasicNameValuePair("marital_status_visible", "No"));
requestParaList.add(new BasicNameValuePair("short_bio", bio));
requestParaList.add(new BasicNameValuePair("short_bio_visible", "Yes"));
requestParaList.add(new BasicNameValuePair("country", country));
requestParaList.add(new BasicNameValuePair("country_visible", "Yes"));
requestParaList.add(new BasicNameValuePair("zipcode", zipCode));
requestParaList.add(new BasicNameValuePair("zipcode_visible", "Yes"));
requestParaList.add(new BasicNameValuePair("avatar", ""));
requestParaList.add(new BasicNameValuePair("latest_status_update", recentUpdate));
requestParaList.add(new BasicNameValuePair("latest_status_update_visible", "Yes"));
requestParaList.add(new BasicNameValuePair("pain_scale", painLevel));
requestParaList.add(new BasicNameValuePair("pain_scale_visible", "No"));
// CALL WEBSERVICE
WebServiceCommunicator.getInstance().registerForServerResponse(
ProfileScreen.this);
WebServiceCommunicator.getInstance().callGetAppWebService(
Constant.showDialog, this.getParent(),
Constant.methodURL, this.getParent(), Constant.PID_UPDATE_USER_INFO,
false, requestParaList);
} else {
Constant.showAlertDialog(Constant.errorTitle,
Constant.MSG_CHECK_INTERNET_SETTING, this.getParent(),
false);
}
}
这是处理程序的代码:
private Handler _handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.arg1) {
case Constant.PID_GET_USER_INFO:
if (parseResponse(msg.obj.toString(),Constant.PID_GET_USER_INFO) == true) {
} else {
runOnUiThread(new Runnable() {
public void run() {
Constant.showAlertDialog(
Constant.DIALOG_TITLE_ERROR,
"Profile not available.",
ProfileScreen.this, false);
}
});
}
break;
case Constant.PID_UPDATE_USER_INFO:
if (parseResponse(msg.obj.toString(),Constant.PID_UPDATE_USER_INFO) == true) {
/*Constant.showAlertDialog(
Constant.DIALOG_TITLE_ERROR,
"Profile updated successfully.",
ProfileScreen.this, false);*/
} else {
runOnUiThread(new Runnable() {
public void run() {
Constant.showAlertDialog(
Constant.DIALOG_TITLE_ERROR,
"Profile not updated.",
ProfileScreen.this, false);
}
});
}
break;
default:
break;
}
}
};
在上面的代码中,警报对话框配置文件未更新。多次显示。
警报对话框的代码:
public static void showAlertDialog(final String title, String message,
final Context context, final boolean redirectToPreviousScreen) {
AlertDialog.Builder alertbox = new AlertDialog.Builder(context);
alertbox.setMessage(message);
//alertbox.setTitle(title);
alertbox.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
});
try{
alertbox.show();
}catch (Exception b) {
b.printStackTrace();
}
}