2015-03-22 5 views
1

J'essaie de basculer entre les fragments de mon activité. Je lisais this tutorial, mais mon cas est un peu différent car je ne veux pas/ne peux pas utiliser le 'FragmentPagerAdapter', à la place, je veux qu'un bouton qui est pressé sur l'activité permutera entre 2 fragments.basculer entre les fragments sans 'FragmentPagerAdapter'

Ma mise en page d'activité se compose d'un bouton et ViewPager. En plus, j'ai Fragment1 et Fragment2. Comment puis-je basculer entre ces fragments en utilisant la méthode OnClick?

Ma mise en page:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <Button 
    android:text="Switch it" 
    android:onClick="switchFragment"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </android.support.v4.view.ViewPager> 

</LinearLayout> 

et mon activité:

public class MainHeaderFragment2 extends ActionBarActivity {  
    ... 
    public void switchFragment(View view){ 
     Fragment fragment 
     if(checkSomething()) 
      fragment = new Fragment1(); 
     else 
      fragment = new Fragment2(); 
     ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     // now need to put the selected fragment in ViewPager somehow. 
     // How? that is my question 
    } 
} 
+2

Comment peupler votre 'ViewPager' alors? Utilisez-vous 'ViewPager' juste pour remplacer les fragments? Si c'est le cas, vous ne devriez pas l'utiliser et vous devriez plutôt utiliser FragmentManager. – kha

+0

@kha pouvez-vous être plus précis? J'ai vu que si je veux utiliser FragmentManager j'ai besoin de remplacer par la ligne: getFragmentManager(). BeginTransaction(). Replace (R.id.fragment_container, newFragment); Mais quelle devrait être la représentation de vue du fragment_container dans mon layout.xml? – GyRo

+0

Trop longtemps pour répondre dans un commentaire. Publié comme réponse à la place. La réponse peut ne pas être correcte en fonction de votre question et de la présence de ViewPager dans votre mise en page. Si oui, faites le moi savoir après l'avoir lu et je le supprimerai. – kha

Répondre

1

Sur la base de vos commentaires, voici ce que vous devez faire:

Changer votre mise en page à ceci:

<Button 
android:text="Switch it" 
android:onClick="switchFragment"/> 

<FrameLayout 
    android:id="@+id/fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Pour le remplir première fois avec votre premier fragment:

Fragment1 fragment1 = Fragment1.create(); 
FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
fragmentTransaction.add(R.id.fragment_container, fragment1); 
fragmentTransaction.commit(); 

Pour le remplacer,

Fragment2 fragment2 = Fragment2.create(); 
FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
fragmentTransaction.replace(R.id.fragment_container, fragment2, "optionalTag"); 
fragmentTransaction.commit(); 

Fragmen1 et Fragment2 sont les fragments que vous souhaitez afficher ou remplacer.

+0

Le fragment n'a pas de méthode create() – GyRo

+0

Utilisez à la place un nouveau fragment() si vous ne voulez pas utiliser un static(). C'est plus une chose de préférence. – kha