Terminer l'appel de l'activité lors de l'AsyncTask complète
Ma vocation d'activité:
public class Hello extends Activity {
public void onCreate(Bundle savedInstanceState) {
MyTask mt = new MyTask(this);
mt.execute();
}
Maintenant Dans MyTask (une classe externe):
public class MyTask extends AsyncTask<Void, Void, Void> {
private Context mContext;
public MyTask(Context context) {
mContext = context;
}
//doinbackground, etc
protected void onPostExecute() {
mContext.finish();
}
D'autres choses fonctionnent comme prévu, si je retire mContext.finish()
ci-dessus.
Mais si je suis d'appeler mContext.finish()
, j'obtiens une erreur: The method finish() is undefined for the type Context
(Eclipse ne montre pas fini() quand j'écris mContext. ainsi que le suggère je suis sur finish() à tort.)
Que dois-je faire pour terminer l'appel de l'activité Hello
après MyTask
termine la tâche
Que faire si vous écrivez Bonjour.c'.finish()?
J'ai essayé déjà, mais il dit:
J'ai essayé déjà, mais il dit:
No enclosing instance of the type Hello is accessible in scope
OriginalL'auteur Atul Goyal | 2011-12-24
Vous devez vous connecter pour publier un commentaire.
Serait la bonne façon de jeter un
Context
à unActivity
et appeler safinish()
méthode. Pas sûr pourquoi vous voulez terminer unActivity
à partir d'unAsyncTask
siOups, ça ne marche pas et que je vais avoir un Moment de l'Exécution Exception:
java.lang.ClassCastException
OriginalL'auteur Squonk
Ce que vous pouvez essayer de le faire au lieu de l'appeler contexte.finish(), pourquoi ne pas vous faire un rappel de l'interface comme ceci:
Alors vous mettre en œuvre dans votre Activité
Et au lieu d'avoir le Contexte comme un paramètre que vous avez TaskCallback
Là vous allez, il vous donne plus de flexibilité à la coutume de chaque mise en œuvre.
new ProgressDialog(mContext);
que j'ai pu faire par le passévous pouvez toujours jeter la TaskCallback dans un Contexte, ou vous pouvez également mettre en place une méthode pour votre progrès de côté de fait(), une autre alternative est de jeter un contexte d'Activité et de vérifier avec instanceof
C'est super, merci beaucoup.
OriginalL'auteur Necronet
J'ai eu la même situation, alors je fais comme suit:
Espère que cela aide 🙂
OriginalL'auteur desu sudarsana
Vous pouvez créer un nouveau privé AsyncTask étendue de votre public.
Dans ce privé AsyncTask vous avez accès à l'Activité des trucs et vous pouvez remplacer le onPostExecute méthode pour la terminer.
Votre vraiment AsyncTask
Votre Activité avec salle de AsyncTask
OriginalL'auteur rubdottocom
Définir une méthode dans votre classe d'activité comme ceci:
Et d'appeler cette méthode à partir de la
OnPostExecute
méthode de laAsynTask
classe.OriginalL'auteur Neeraj
Pouvez-vous essayer
Semble comme sa parce qu'il fait appel à l'aide mContext qu'il dit undefined.
The method finish() is undefined for the type MyTask
OriginalL'auteur Shadow