2016-11-17 3 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가 표시되지 않습니다. 그것이 작동하지 않는 이유

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

사람은 알고 있나요 :

나는 코드, AsyncTask를 클래스에 내 코드를 실행? 도와주세요.

+0

'removeDialog'는 AsyncTask 파생 클래스의 이름입니까? 수업의 헤더를 게시 할 수 있다면 좋을 것입니다. – 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

관련 문제