2012-05-28 2 views
0

J'ai une activité qui instancie quelques fragments:Comment exécuter à nouveau la méthode onActivityCreated d'un fragment?

List<Fragment> fragments = new ArrayList<Fragment>(); 
fragments.add(Fragment.instantiate(this, HomeFragment.class.getName())); 
fragments.add(Fragment.instantiate(this, BorrowedFragment.class.getName())); 
fragments.add(Fragment.instantiate(this, LentFragment.class.getName())); 
fragments.add(Fragment.instantiate(this, PeopleFragment.class.getName())); 

Ces fragments sont liés à un ViewPager. Chaque fragment exécute une instruction SELECT et montre le contenu sous forme de liste à l'utilisateur.

Le problème est que dans le HomeFragment, j'ai un bouton qui, lorsqu'il est cliqué, montre à l'utilisateur un formulaire, afin qu'il puisse ajouter des informations à cette table. Lorsque l'utilisateur ajoute les informations, je termine() l'activité et le HomeFragment s'affiche à nouveau. Quand je swype à la BorrowFragment rien n'est montré là. Je dois faire un swype à PeopleFragment (le dernier de la liste) et revenir à BorrowedFragment. Seulement alors, l'information est affichée.

La seule chose que je fais au moment où l'information est inséré est:

Button btDone = (Button) findViewById(R.id.buttonDone); 
     btDone.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(ck1.isChecked()) 
        isIOwe = true; 
       else 
        isIOwe = false; 
       insertRecord(); 
       Toast.makeText(getApplicationContext(), "Record added", Toast.LENGTH_SHORT).show(); 
       /*FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
       ft.add(Fragment.instantiate(ctx, PeopleFragment.class.getName()), "test"); 
       ft.commit();*/ 
       finish(); 

      } 
     }); 

Je me demandais s'il y a quelque chose que je devrais faire avec le FragmentTransaction, pour être en mesure de redémarrer le Lifecyle du fragments.

Une aide?

Merci, Felipe

Répondre

0

Je pense que l'exécution de votre requête dans la méthode getView du fragment devrait faire l'affaire.

Sinon, il existe une autre possibilité. Je ne connais pas très bien le ViewPager, mais je ne serais pas surpris s'il avait un écouteur qui serait appelé quand un de ses fragments serait affiché. Si vous laissez vos fragments implémenter une interface qui permet à ses descendants d'implémenter une méthode executeQuery, vous pouvez simplement parcourir votre liste de fragments et l'appeler quand l'événement se produit.

+0

Salut Bram. J'ai essayé d'avoir le code sur getView, mais cela n'a pas fonctionné. De plus, je n'ai pas trouvé d'auditeur pour le ViewPager qui pourrait m'aider à y parvenir, malheureusement! Merci pour l'aide –

Questions connexes