我正在尝试在活动片段之间切换。
我正在阅读this tutorial,但是我的情况有些不同,因为我不想/不能使用'FragmentPagerAdapter',相反,我希望在活动上按下的按钮可以在2个片段之间切换。

我的活动布局由一个Button和ViewPager组成。此外,我还有Fragment1和Fragment2。
如何使用OnClick方法在这些片段之间切换?

我的版式:

<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>


和我的活动:

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
    }
}

最佳答案

根据您的评论,这是您应该做的:

将您的布​​局更改为此:



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

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




第一次用第一个片段填充它:

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


要更换它,

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


Fragmen1Fragment2是要显示或替换的片段。

09-13 12:06