2012-07-20 3 views
1

Je ne sais pas pourquoi mon code ne fonctionne pas. Je lis beaucoup de mêmes problèmes, mais dans la plupart des cas, c'est la bonne solution, mais pour moi, ça ne marche pas. Mon AsyncTask ressemble à ceci:Je ne peux pas arrêter ProgressDialog avec la méthode dismiss();

public class SavingAsync extends AsyncTask<String, String, String> { 
private static final String TAG = "DrawView"; 
private ProgressDialog pd; 
private Context context; 
private File saveFile; 
private Bitmap bitmap; 

public SavingAsync(Context c, File sF, Bitmap b) { 
    context = c; 
    saveFile = sF; 
    bitmap = b; 
} 

@Override 
protected void onPostExecute(String result) { 
    pd.dismiss(); 
    super.onPostExecute(result); 
} 

@Override 
protected void onPreExecute() { 
    pd = new ProgressDialog(context); 
    ProgressDialog.show(context, "", "Saving..."); 
    super.onPreExecute(); 
} 

@Override 
protected String doInBackground(String... params) { 
    OutputStream stream; 
    try { 
     stream = new FileOutputStream(saveFile); 
     bitmap.compress(CompressFormat.PNG, 80, stream); 
     stream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

}

Bitmap est enregistré avec succès, mais ProgressDialog courir pour toujours:/

+0

consultez http://developer.android.com/reference/android/app/DialogFragment.html –

Répondre

3

Vous montrez ProgressDiaog avec

ProgressDialog.show(context, "", "Saving..."); 

et méthode show retourne une Objet PreogressDialog.

La boîte de dialogue que vous êtes en train de fermer à l'aide de la variable de référence pd à l'aide de pd. dismiss() dans votre code doit faire référence à la boîte de dialogue que vous montrez. Vous devez l'affecter à pd. Comme cette

pd = ProgressDialog.show(context, "", "Saving..."); 

Et puis en appelant pd.dismiss() rejettera le programmé actuellement Dialog.

+1

Oh! Honte à moi ... merci beaucoup! – west44

+0

Oui, ne vous inquiétez pas ... cela fonctionne après 10 minutes de post-question. – west44