2013-06-01 6 views
0

Ceci est mon code. Je fais du googling depuis environ 2 heures maintenant et je deviens fou .. J'ai fait exactement comme tous les exemples sur les sites Web, mais il ne veut tout simplement pas montrer, et ne me donne pas d'erreurs. J'essaie de récupérer une source de site Web dans un asyncTask, je veux montrer l'écran de dialogue, et le rejeter une fois terminé.Android ProgressDialog n'apparaîtra pas dans mon AsyncTask

Ceci est mon code:

public static class RetrieveSiteData extends AsyncTask<String, Void, String> { 
    private Context SubContext; 
    private ProgressDialog pd; 

    public RetrieveSiteData(Context SubContext){ 
     this.SubContext = SubContext; 
    } 

    @Override 
    protected void onPreExecute() { 
     pd = new ProgressDialog(this.SubContext); 
     pd.setTitle("Loading. Please wait..."); 
     pd.show(); 
     Log.v("Test","dit is het begin"); 
    } 


    @Override 
    protected String doInBackground(String... urls) { 
     StringBuilder builder = new StringBuilder(1000000); 


     for (String url : urls) { 
      Log.v("URLS",url); 
      if(url != "" && url != null){ 
       try {     
        HttpClient client = new DefaultHttpClient(); 
        HttpGet request = new HttpGet(url); 
        HttpResponse response = client.execute(request); 

        InputStream in = response.getEntity().getContent(); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
        String line = null; 
        while((line = reader.readLine()) != null) 
        { 
         builder.append(line); 
        } 
        in.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 


     return builder.toString(); 
    } 


    @Override 
    protected void onPostExecute(String result) { 
     pd.dismiss(); 
     Log.v("Test","dit is het eind"); 
    } 
} 
+0

dit is het commencent .. est-il indiqué? – stinepike

+0

où est votre code pour appeler une tâche asynchrone comme: 'new RetrieveSiteData (SubContext) .execute();' – MAC

+1

Votre code fonctionne pour moi. Êtes-vous sûr que ce n'est pas le rejeter rapidement? Tous les messages de journal sont-ils appelés? Quoi d'autre avez-vous à l'écran? Votre contexte est-il correctement défini? –

Répondre

0

Essayez de ne pas invoquer get() du AsyncTask. Il va bloquer le thread ui jusqu'à ce que le AsyncTask soit terminé, et donc pourquoi le ProgressDialog n'est pas affiché.

+0

Je vais essayer, mais comment puis-je récupérer les données? Je dois passer à la partie suivante de mon script. –

+0

Merci! cela fonctionne, mais comment puis-je récupérer mes données de la tâche? –

+0

onPostExecute() est appelée avec la valeur que vous renvoyez dans doInBackground(), ce qui vous permet d'y récupérer vos données. –

0

essayer d'utiliser comme

@Override 
    protected void onPreExecute() { 

     pd = ProgressDialog.show(SubContext, "", "Loading. Please wait...", true); 

     Log.v("Test","dit is het begin"); 
    } 
+0

J'exécute le code à partir d'un fragment, et cela ne fonctionne toujours pas. Ce est le code qui l'appelle: \t \t \t \t \t \t RetrieveSiteData retrieveSiteData = new RetrieveSiteData (getActivity()); \t \t \t \t \t \t chaîne Shtml = retrieveSiteData.execute ("http://www.myitemsale.co.uk/getMovies.php?q=" + stitle) .get(); –

+0

Quel est le problème avec le code OP? – Raghunandan

+0

Voulez-vous dire sunil? J'ai essayé le code mais il fait exactement la même chose que ce que j'avais déjà. Cela ne me montre pas le dialogue. Est-ce possible parce que je travaille avec des onglets? que pour une raison quelconque, il apparaît dans le mauvais écran? –

0

vient de mettre votre nom d'activité

@Override 
protected void onPreExecute() { 
    pd = new ProgressDialog(Youractivityname.this); 
    pd.setTitle("Loading. Please wait..."); 
    pd.show(); 
    Log.v("Test","dit is het begin"); 
} 
Questions connexes