2012-10-03 4 views
2

Bonjour, juste une question rapide. J'ai une activité qui héberge 2 fragments. maintenant les fragments sont appelés à travers des boutons dans un pied de page de l'activité. Dans les fragments, je fais essentiellement la même chose, démarrer un AsyncTask, analyser une réponse JSON et montrer dans un ListView. La seule différence est que certaines différences dans la mise à jour de certaines vues dans les mises en page.implémenter AsyncTask base dans l'activité et transmettre les résultats aux fragments

Donc, ma question, est-ce qu'il y a une manière que je peux faire le AsyncTask avec différents constructeurs des fragments, dans l'activité et passer les résultats aux fragments pour mettre à jour les vues? Le seul problème que je peux voir pour l'instant est (si c'est un problème), comment savoir quel fragment transmettre les données.

Y a-t-il un meilleur moyen ou est-ce que je fais la même chose dans chaque fragment? Pense que je m'inquiète trop de la duplication de code

Répondre

0

Utilise l'héritage!

Pseudo-code de clarification:

SuperFragment:

abstract SuperFragment extends Fragment{ 

    abstract protected void updateLayoutInFragment(..); 

    protected MyUpdateTask <...> { 

     MyUpdateTask (int i){ 
      // first constructor 
     } 

     MyUpdateTask (int i, int y){ 
      // second constructor 
     } 

     @Override 
     doInBackground(...){ 
      // do stuff 
     } 

     @Override 
     postExecute(...){ 
      if (request was succesfull){ 
       updateLayoutInFragment(..); 
      } 
     } 
    } 
} 

ChildFragment

public class MyFragment extends SuperFragment { 

    @Override 
    onCreateView(...){ 
     //startTask 
    } 

    protected void updateLayoutInFragment(..){ 
     // fill layout 
    } 
} 
Questions connexes