Externe AsyncTask classe avec ProgressDialog [mise à Jour: et le retour?]
**Mise à jour: (Voir ci-dessous)**j'ai été en regardant autour pour un couple de jours et ne pouvez pas trouver une réponse claire à cette.
Certains disent qu'il possible de dire à certains de réaliser certains disent qu'il ne l'est pas. Je suis un fou sur cette.
Ce que je veux, c'est juste pour en avoir le AsyncTaskTask montrant une progressbar une classe externe. Pour ce faire, je suis en transmettant le contexte comme vous pouvez le voir dans la classe principale. Mais ce que j'essaie je obtenir NullPointerException
.
De travail exemples de code est apprécié. Merci
L'aide d'Android 2.2.
principal:
import android.app.Activity;
import android.os.Bundle;
public class AsyncDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new AsyncClass(this).execute();
}
}
AsyncClass.java
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.SystemClock;
public class AsyncClass extends AsyncTask<Void, String, Void> {
private Context context;
ProgressDialog dialog = new ProgressDialog(context);
public AsyncClass(Context cxt) {
context = cxt;
}
@Override
protected void onPreExecute() {
dialog.setTitle("Please wait");
dialog.show();
}
@Override
protected Void doInBackground(Void... unused) {
SystemClock.sleep(2000);
return (null);
}
@Override
protected void onPostExecute(Void unused) {
dialog.dismiss();
}
}
Mise à jour:
J'ai une question de suivi: à l'Aide du code ci-dessus, est-il possible de retourner une valeur à partir de la onPostExecute méthode à la classe, en quelque sorte? (Désolé pour beeing noobish)
J'ai essayé quelque chose comme ceci:
String result = new AsyncClass(this).execute();
et puis une méthode que de retourner une chaîne de caractères. Mais je ne peux pas le faire parce que j'ai eu:
Type mismatch: cannot convert from AsyncTask<String,Void,Void> to String
Que puis-je faire pour remédier à ce problème? Merci.
field variable
puis-je attribuer le résultat dans onPostExecute
mais je ne suis pas sûr si ce est la bonne façon.OriginalL'auteur droidgren | 2010-07-27
Vous devez vous connecter pour publier un commentaire.
De la création de l'
ProgressDialog
avec une valeur null contexte. Le code suivant a travaillé pour moi.Le problème est que le ProcessDialog est instancié avant que le constructeur est appelé. Par conséquent, le contexte est null. Déplacement de l'instanciation de la ProcessDialog dans le constructeur comme cela garantit que le contexte détient la valeur passée en cxt. Aussi, vous n'avez pas vraiment besoin de stocker le contexte comme un champ dans cet exemple. Il suffit de passer cxt à ProgressDialog constructeur (c'est à dire de dialogue = new ProgressDialog(cxt)).
belle réponse SSZero!
OriginalL'auteur SSZero
ok c'est ce que j'ai fait comme j'ai été en utilisant des fragments. C'est de cette façon que vous appelez l'AsyncTask à l'intérieur d'un fragment:
et c'est ainsi que ma AsyncTask extérieur de la classe ressemble à:
@SSZero grâce grande réponse, a beaucoup aidé.
OriginalL'auteur SMR
Je voudrais répondre à cette question de suivi à savoir
Je l'ai fait dans mon code, il a travaillé.
Appeler ce code chaque fois que vous le souhaitez.
OriginalL'auteur rishu