Small things like this drive me crazy. If anyone could hint what I am
doing wrong in the code below (full example of the issue described
previously in this thread), I would be very grateful.
Thank you,
-szabolcs
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AsyncTaskTest extends Activity {
static final int DLG_PROGRESS = 0;
static String strDlgProgressMessage = "";
DaTask mTask = null;
Button mBtnRunTask = null;
// SET THE BOOLEAN BELOW TO CHANGE BEHAVIOR
static final boolean USE_DLG_REMOVE_INSTEAD_OF_DISMISS = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBtnRunTask = new Button(AsyncTaskTest.this);
mBtnRunTask.setText("Run Task");
mBtnRunTask.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View btn) {
btn.setEnabled(false);
mTask = new DaTask();
mTask.execute(new Integer(121));
}
});
setContentView(mBtnRunTask);
}
@Override
public Dialog onCreateDialog(int idDlg) {
Dialog dlg = null;
switch (idDlg) {
case DLG_PROGRESS:
ProgressDialog pDlg = new ProgressDialog(AsyncTaskTest.this);
pDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pDlg.setCancelable(true);
pDlg.setOnCancelListener(
new OnCancelListener() {
@Override
public void
onCancel(DialogInterface dialog) {
if (mTask != null &&
mTask.getStatus() !=
AsyncTask.Status.FINISHED) {
mTask.cancel(true);
}
}
}
);
dlg = pDlg;
break;
}
return dlg;
}
@Override
public void onPrepareDialog(int idDlg, Dialog dlg) {
switch (idDlg) {
case DLG_PROGRESS:
((ProgressDialog)dlg).setMessage(strDlgProgressMessage);
break;
}
}
public class DaTask extends AsyncTask<Integer, Void, Double> {
@Override
protected Double doInBackground(Integer... aNum) {
Double result = 0.0;
for (int i=0; i<100000; i++) {
if (isCancelled())
break;
result = Math.sqrt(aNum[0]);
}
return result;
}
@Override
public void onPreExecute() {
AsyncTaskTest.strDlgProgressMessage = "Running
task,\nplease
wait..";
showDialog(AsyncTaskTest.DLG_PROGRESS);
}
@Override
public void onPostExecute(Double result) {
if (USE_DLG_REMOVE_INSTEAD_OF_DISMISS)
removeDialog(AsyncTaskTest.DLG_PROGRESS);
else
dismissDialog(AsyncTaskTest.DLG_PROGRESS);
mBtnRunTask.setEnabled(true);
}
@Override
public void onCancelled() {
if (USE_DLG_REMOVE_INSTEAD_OF_DISMISS)
removeDialog(AsyncTaskTest.DLG_PROGRESS);
else
dismissDialog(AsyncTaskTest.DLG_PROGRESS);
mBtnRunTask.setEnabled(true);
}
}
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---