package com.teleca.jamendo.ui.loadDialog; import com.teleca.jamendo.model.ErrorMsg; import android.app.Activity; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.os.AsyncTask; import android.widget.Toast; /** * 异步加载对话框 * * @author lilin * @date 2012-1-6 下午09:41:25 * @ClassName: LoadingDialog */ public abstract class LoadDialog<Input, Result> extends AsyncTask<Input, ErrorMsg, Result> { // 滚动条 private ProgressDialog mProgressDialog; protected Activity mActivity; // 加载的提示信息 private int id_loadMsg = 0; private int id_failMsg = 0; private String loadmsg = ""; private String failmsg = ""; // 采用ID来获取String的值 public LoadDialog(Activity activity, int loadingMsg, int failMsg) { this.mActivity = activity; this.id_loadMsg = loadingMsg; this.id_failMsg = failMsg; } // 直接赋值String public LoadDialog(Activity activity, String loadingMsg, String failMsg) { this.mActivity = activity; loadmsg = loadingMsg; failmsg = failMsg; } public abstract void doStuffWithResult(Result result); public abstract Result doInBackground(Input... params); @Override public void onCancelled() { failLoadMsg(); super.onCancelled(); } @Override public void onPreExecute() { String title = "请耐心等待"; String msg = ""; if (!loadmsg.equals("")) { msg = loadmsg; } if (id_loadMsg != 0) { msg = mActivity.getString(id_loadMsg); } mProgressDialog = ProgressDialog.show(mActivity, title, msg, true, true, new OnCancelListener() { public void onCancel(DialogInterface dialogInterface) { LoadDialog.this.cancel(true); } }); super.onPreExecute(); } @Override public void onPostExecute(Result result) { super.onPostExecute(result); mProgressDialog.dismiss(); if (result != null) { doStuffWithResult(result); } else { failLoadMsg(); } } @Override protected void onProgressUpdate(ErrorMsg... values) { Toast.makeText(mActivity, values[0].getMessage(), 3000).show(); this.cancel(true); mProgressDialog.dismiss(); super.onProgressUpdate(values); } protected void failLoadMsg() { String msg = ""; if (!failmsg.equals("")) { msg = failmsg; } if (id_failMsg != 0) { msg = mActivity.getString(id_failMsg); } Toast.makeText(mActivity, msg, 2000).show(); } }