Ereignis auslösen, wenn AsyncTask mit Listener abgeschlossen ist

Ich habe einige Verwirrung darüber, wie Listener zum Weitergeben von Informationen zwischen Klassen und Aktivitäten verwendet werden.

Das Szenario ist das folgende:
Ich habe eine Aufgabe, die Daten aus einer SQLite-Datenbank liest und diese Daten in eine ArrayList schreibt, die an einen Adapter übergeben wird, der sie dann auf dem Bildschirm anzeigt.

Die Frage:
Meine App stürzt ab, wenn ich versuche, die Listener-Oberfläche mit einem Wert zu aktualisieren. Es zeigt nichts im Logcat ... es hängt nur die App. Könnte jemand freundlich darauf hinweisen, wo ich falsch liege. - Vielen Dank

Einzelheiten:
Ich habe die Datenbank-Verarbeitung von einer Klasse namens DatbaseRoutines durchgeführt und darin eine innere Methode, die das schwere Heben macht. Die Methode verwendet AsyncTask, um den Haupt-Thread nicht zu überfrachten.

Ich habe ein Interface mit einer einzigen Methode erstellt

 public interface DatabaseProcessListener {
  public void ProcessingIsDone(boolean blnProcessIsFinished);
} 

In meiner DatabaseRoutines-Klasse erstelle ich eine private Variable

private DatabaseProcessListener dbProcesslistener;

zusammen mit einem Setter dafür

   public void setDbProcesslistener(DatabaseProcessListener dbProcesslistener) {
    this.dbProcesslistener = dbProcesslistener;
    }

Wenn die Verarbeitung abgeschlossen ist, verwende ich die PostExecute-Methode, um den Listener zu aktualisieren, sodass dieser den Wert im Listener in True ändern kann (dh, dass die DB-Verarbeitung abgeschlossen ist). Unten ist der Code

            protected void onPostExecute(Boolean aBoolean) {
                super.onPostExecute(aBoolean);
                dialog.dismiss(); //i have progress dialog during processing and its                        
                //closed here

                if (blnUpdateSucceededStatus) 
                 {
                     dbProcesslistener.ProcessingIsDone(true);
                  } 
                   else 
                  {
                    Toast.makeText(ctx, "Transactions Processing   
                     failed",Toast.LENGTH_SHORT);
                   } ;

Schließlich implementiere ich in der Aktivität zum Anzeigen der aus der Datenbank gesammelten Daten den Listener. siehe unten.

public class MyActivity extends Activity implements DatabaseProcessListener 
{

@Override
public void ProcessingIsDone(boolean blnProcessIsFinished) {
    if(blnProcessIsFinished){
        PopulateExpandableListView();
    }
   public void PopulateExpandableListView() {
   //code for populating the listview goes here;
     }
}

nach einigem graben habe ich den logcat fehler gefunden..es ist eine nullpointer ausnahme

05-05 11:11:18.590: ERROR/AndroidRuntime(22339): FATAL EXCEPTION: main
    java.lang.NullPointerException
    at com.example.mledger.DatabaseRoutines$1.onPostExecute(DatabaseRoutines.java:258)
    at com.example.mledger.DatabaseRoutines$1.onPostExecute(DatabaseRoutines.java:141)
    at android.os.AsyncTask.finish(AsyncTask.java:631)
    at android.os.AsyncTask.access$600(AsyncTask.java:177)
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4921)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
    at dalvik.system.NativeStart.main(Native Method)

Leider hängt die App und die Benutzeroberfläche aktualisiert niemals die Aktivität, bei der Daten mit true angezeigt werden (dh die Verarbeitung ist abgeschlossen).

Zeigen Sie mir in die richtige Richtung. - Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage