2012-09-13 4 views
0

J'essaie de comprendre comment les fragments fonctionnent. J'ai 3 classes, MainActivity, Fragment1 et Fragment2.SherlcokFargments Bouton dans un fragment pour appeler le second fragment

MainActivity étend SherlockFragmentActivity et

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Fragment1 firstFragment = new Fragment1(); 
    firstFragment.setArguments(getIntent().getExtras()); 
    getSupportFragmentManager().beginTransaction() 
       .add(R.id.fragment_container1, firstFragment).commit(); 

Maintenant, je charge Fragment1 dans mon fragment_container, et il affiche agréable.

(donc main_activity.xml n'a qu'un seul)

Ok, Fragment1 étend SherlockFragment, ne fait rien plus de

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    return inflater.inflate(R.layout.fragment1layout, container, false); 

Je gonflent juste de mon .xml qui a une vue de texte et un bouton.

Où dans le monde maintenant puis-je par exemple Button, et lui donner du code pour remplacer Fragment1 avec Fragment2?

Quel est le code pour cela, comme je suis maintenant "dans Fragment1", donc j'ai besoin de communiquer en quelque sorte avec le support Fragment et lui dire "me remplacer par Fragment2".

Fragment2 étend également SherlockFragment, et ne fait rien, il est vide gonfle .xml

Répondre

1

Vous devez appeler votre fragment2 de fragment1 comme ci-dessous

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment1layout, container, false); 
      Button button = (Button)view.findViewById(R.id.yourButton); 
      button.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        //Replace your fragment 

       } 
      }); 
     return view; 
} 
+0

Vous êtes béni :) J'ai essayé sans view.findViewBy ... et alors cela ne fonctionne pas. Je vous remercie! Cela m'a beaucoup aidé à comprendre au moins un peu, mais ce dont j'ai besoin c'est de 2 fragments sur la même "vue" .. – Balkyto

0

Je suis maintenant "dans Fragment1" si Je dois communiquer d'une façon ou d'une autre avec le porteur de fragment et lui dire «remplacez-moi par Fragment2».

Si vous voulez remplacer Fragment1 à Fragment2 lorsque vous cliquez sur le bouton qui est en Fragment1:

(meilleures pratiques)

  1. vous devez créer callbacks de fragment1 à MainActivity comme il est décrit here
  2. dans les logiques de lieu MainActivity qui remplaceront fragment1 à fragment2.

(mauvaises pratiques)

  1. méthode de création en MainActivity qui remplacera un fragment à l'autre par exemple changeFirstFragmentToAnother()
  2. alors quand vous devez changer fragment1 pour fragment2 vous pouvez appeler cette méthode manuelle (de fragment1) comme ceci:

    ((MainActivity)getActivity()).changeFirstFragmentToAnother();

Questions connexes