2012-04-04 17 views
0

Ich habe es geschafft, eine Asynctask für die Berechnung von etwas zu implementieren, aber ich möchte auch einen Fortschrittsdialog anzeigen, während DoInBackground ausgeführt wird.ProgressDialog in einer AsyncTask, NullPointerException

Dies ist mein Code so weit:

protected void onPreExecute() { 

    this.dialog.setMessage("Please wait"); 
    this.dialog.show(); 

    } 

    protected Integer doInBackground(Void... b) { 

      ........ 

    return price; 

    } 

    protected void onPostExecute(Integer price) { 

    if(dialog.isShowing()) { 
     dialog.dismiss(); 
    } 

    Toast.makeText(_ctx, price, Toast.LENGTH_LONG).show(); 

    } 

Wenn ich den Debugger ausführen heißt es, dass der Dialog enthält nur NULL

Was mache ich falsch hier? Vielen Dank im Voraus

Antwort

3

Sie müssen Ihre dialog instanziieren (z. B. dialog = new ProgressDialog(_ctx));

0

Statt this der Verwendung versuchen getApplicationContext();

0

Ersetzen 'this.dailog' in OnPreExecute() mit Ihrem 'ActivityClassname.this'. Da sich die Dialogbox in Ihrem Aktivitätskontext befindet, bezieht sich "dies" auf Ihre Klasse, die die AsyncTask-Klasse erweitert.

+0

Dann muss ich den ProgressDialog in meiner Hauptaktivität deklarieren? –

+0

ya ... hier müssen Sie es in der Haupttätigkeit erklären. Nur die Sache ist, während Sie den Fortschrittsbalken instanziieren, nur durch den Hauptaktivitätskontext als Parameter dazu. Etwas wie das, \t dialog = neuer ProgressDialog (MainActivity.this); – RootCode

Verwandte Themen