Zdarzenie wyzwalające, gdy AsyncTask jest zakończony przy użyciu Listenera

Mam pewne wątpliwości co do sposobu używania nasłuchiwaczy do przekazywania informacji między klasami i działaniami.

Scenariusz jest następujący:
Mam zadanie, które odczytuje dane z bazy danych Sqlite i umieszcza te dane w tablicy ArrayList przekazywanej do adaptera, który następnie wyświetla je na ekranie.

Pytanie:
Moja aplikacja ulega awarii, gdy próbuję zaktualizować interfejs nasłuchiwania o wartość. Nie pokazuje niczego w logcat ... po prostu zawiesza aplikację. Czy ktoś może uprzejmie wskazać, gdzie się mylę. - Dzięki

Detale:
Przetwarzam bazę danych wykonaną przez klasę o nazwie DatbaseRoutines, aw niej wewnętrzną metodę podnoszenia ciężkiego. metoda używa AsyncTask, aby nie zginać głównego wątku.

Stworzyłem i interfejs za pomocą jednej metody

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

W mojej klasie DatabaseRoutines tworzę zmienną prywatną

private DatabaseProcessListener dbProcesslistener;

wraz z seterem za to

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

Po zakończeniu przetwarzania używam metody PostExecute, aby zaktualizować nasłuchiwanie, dzięki czemu może to zmienić wartość w detektorze na True (tzn. Że przetwarzanie db jest wykonywane) poniżej znajduje się kod

            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);
                   } ;

Na koniec w działaniu wyświetlającym dane zebrane z bazy danych I Implementuj słuchacza. patrz poniżej.

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;
     }
}

po kilku kopaniach znalazłem błąd logcat .. wyjątek nullpointer

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)

Niestety aplikacja jest zawieszona, a interfejs nigdy nie aktualizuje działania, które wyświetla dane z prawdą (tj. Przetwarzanie jest zakończone)

Skieruj mnie we właściwym kierunku. - Dzięki

questionAnswers(2)

yourAnswerToTheQuestion