Clase AsyncTask externa con ProgressDialog [Actualización: y regresando?]

** Actualizado: (Ver más abajo) ** He estado buscando por un par de días y no puedo encontrar una respuesta directa a esto. Algunos dicen que es posible que algunos digan que lo logran, otros dicen que no. Me estoy volviendo loco con esto.

Lo que quiero es que AsyncTaskTask muestre una barra de progreso en una clase externa. Para hacer esto, paso el contexto como se puede ver en la clase principal. Pero lo que sea que intente me saleNullPointerException.

Se aprecian ejemplos de código de trabajo. Gracias

Usando Android 2.2 por cierto.

principal:

import android.app.Activity;
import android.os.Bundle;

public class AsyncDemo extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        new AsyncClass(this).execute();
    }
}

AsyncClass.java

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.SystemClock;

public class AsyncClass extends AsyncTask<Void, String, Void> {
    private Context context;
    ProgressDialog dialog = new ProgressDialog(context);

    public AsyncClass(Context cxt) {
        context = cxt;
    }

    @Override
    protected void onPreExecute() {
        dialog.setTitle("Please wait");
        dialog.show();
    }

    @Override
    protected Void doInBackground(Void... unused) {
        SystemClock.sleep(2000);
        return (null);
    }

    @Override
    protected void onPostExecute(Void unused) {
        dialog.dismiss();
    }
}

Actualizar: Tengo una pregunta de seguimiento: usando el código anterior, ¿es posible devolver un valor del método onPostExecute a la clase principal, de alguna manera? (Perdón por ser un novato) He intentado algo como esto:

String result = new AsyncClass(this).execute();

y luego un método que devuelve una cadena. Pero no puedo hacer eso porque tengo:

Type mismatch: cannot convert from AsyncTask<String,Void,Void> to String

¿Qué puedo hacer para abordar este problema? Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta