2016-11-17 20 views
0

私は、次のコードProgressDialog新しいアクティビティAsynctaskが表示されません、なぜですか?

public class removeDialog extends AsyncTask<Void, Void, Void> { 

Context c; 
ProgressDialog asyncDialog; 
String page; 

public removeDialog(Context c, String page) { 
    this.c = c; 
    this.page = page; 

    asyncDialog = new ProgressDialog(c); 
} 

@Override 
protected void onPreExecute() { 
    //set message of the dialog 
    asyncDialog.setTitle("Please wait"); 
    asyncDialog.setMessage("Loading..."); 
    asyncDialog.setCancelable(false); 
    //show dialog 
    asyncDialog.show(); 

    if (page == "algemeneVoorwaarden") { 
     Intent intent = new Intent(c, algemeneVoorwaarden.class); 
     c.startActivity(intent); 
    } 
    if (page == "contact") { 
     Intent intent = new Intent(c, contactTest.class); 
     c.startActivity(intent); 
    } 

    super.onPreExecute(); 
} 

@Override 
protected Void doInBackground(Void... arg0) { 

    //don't touch dialog here it'll break the application 
    //do some lengthy stuff like calling login webservice 

    return null; 
} 

@Override 
protected void onPostExecute(Void result) { 
    //hide the dialog 
    asyncDialog.dismiss(); 

    super.onPostExecute(result); 
} 
} 

私が試した初めてでAsyncTaskクラスを作った:私は、ProgressDialogを見る初めての を、私は、私は何を取得アクティビティを開きたい二度目。

私は試してみました: 初めて試してもProgressDialogは表示されません。

私は、AsyncTaskクラスのコードを自分のコードを実行します。それが機能しない理由

voorwaarden.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new removeDialog(c, "algemeneVoorwaarden").execute(); 
      } 
     }); 

誰かが知っていますか?私を助けてください。

+0

AsyncTask派生クラスの名前は 'removeDialog'ですか?あなたのクラスのヘッダーを投稿できればいいですね。 – Milack27

+0

これはクラスの名前です。 – sander

+0

あなたの 'onPreExecute'では、ダイアログを表示して新しいアクティビティを開始しています。私は間違っているかもしれませんが、あなたのダイアログは最初のアクティビティの中に表示されていると思います。新しいアクティビティを開始すると、ダイアログが残されます。 – Milack27

答えて

1

doInBackgroundが空であるため、ダイアログが表示されるとすぐに終了します。遅れをシミュレートするだけで、数秒でThread.sleep()を追加してみてください。

また、私が始めている新しい活動では、あなたのダイアログが残っていると思われます。だから私は今、これらの新しい活動なしでコードをテストすることをお勧めします。

public class RemoveDialog extends AsyncTask<Void, Void, Void> { 

    ProgressDialog asyncDialog; 

    public RemoveDialog(Context c) { 
     asyncDialog = new ProgressDialog(c); 
    } 

    @Override 
    protected void onPreExecute() { 
     //set message of the dialog 
     asyncDialog.setTitle("Please wait"); 
     asyncDialog.setMessage("Loading..."); 
     asyncDialog.setCancelable(false); 

     //show dialog 
     asyncDialog.show(); 

     super.onPreExecute(); 
    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 

     try { 
      Thread.sleep(3000); 
     } 
     catch (InterruptedException ex) { 
      ex.printStackTrace(); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     //hide the dialog 
     asyncDialog.dismiss(); 

     super.onPostExecute(result); 
    } 
} 
+1

NICE JOBBBB !!!!!ハハ – sander

関連する問題