Я пытаюсь использовать фрагмент с ViewPager с помощью FragmentPagerAdapter.
То, что я ищу, - это заменить фрагмент, расположенный на первой странице ViewPager, с другим.
Пейджер состоит из двух страниц. Первый - это FirstPagerFragment, второй - SecondPagerFragment. Нажатие на кнопку первой страницы. Я хотел бы заменить FirstPagerFragment на NextFragment.
Ниже приведен мой код.
public class FragmentPagerActivity extends FragmentActivity {
    static final int NUM_ITEMS = 2;
    MyAdapter mAdapter;
    ViewPager mPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_pager);
        mAdapter = new MyAdapter(getSupportFragmentManager());
        mPager = (ViewPager) findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);
    }
    /**
     * Pager Adapter
     */
    public static class MyAdapter extends FragmentPagerAdapter {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }
        @Override
        public int getCount() {
            return NUM_ITEMS;
        }
        @Override
        public Fragment getItem(int position) {
            if(position == 0) {
                return FirstPageFragment.newInstance();
            } else {
                return SecondPageFragment.newInstance();
            }
        }
    }
    /**
     * Second Page FRAGMENT
     */
    public static class SecondPageFragment extends Fragment {
        public static SecondPageFragment newInstance() {
            SecondPageFragment f = new SecondPageFragment();
            return f;
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            //Log.d("DEBUG", "onCreateView");
            return inflater.inflate(R.layout.second, container, false);
        }
    }
    /**
     * FIRST PAGE FRAGMENT
     */
    public static class FirstPageFragment extends Fragment {
        Button button;
        public static FirstPageFragment newInstance() {
            FirstPageFragment f = new FirstPageFragment();
            return f;
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            //Log.d("DEBUG", "onCreateView");
            View root = inflater.inflate(R.layout.first, container, false);
            button = (Button) root.findViewById(R.id.button);
            button.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    FragmentTransaction trans = getFragmentManager().beginTransaction();
                                    trans.replace(R.id.first_fragment_root_id, NextFragment.newInstance());
                    trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                    trans.addToBackStack(null);
                    trans.commit();
                }
            });
            return root;
        }
        /**
     * Next Page FRAGMENT in the First Page
     */
    public static class NextFragment extends Fragment {
        public static NextFragment newInstance() {
            NextFragment f = new NextFragment();
            return f;
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            //Log.d("DEBUG", "onCreateView");
            return inflater.inflate(R.layout.next, container, false);
        }
    }
}
... и здесь xml файлы
 fragment_pager.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:padding="4dip"
        android:gravity="center_horizontal"
        android:layout_width="match_parent" android:layout_height="match_parent">
    <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">
    </android.support.v4.view.ViewPager>
</LinearLayout>
 first.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/first_fragment_root_id"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <Button android:id="@+id/button"
     android:layout_width="wrap_content" android:layout_height="wrap_content"
     android:text="to next"/>
</LinearLayout>
Теперь проблема... какой идентификатор я должен использовать в
trans.replace(R.id.first_fragment_root_id, NextFragment.newInstance());
?
Если я использую R.id.first_fragment_root_id, замена работает, но Hierarchy Viewer показывает странное поведение, как показано ниже.
В начале ситуация

после замены ситуация

Как вы можете видеть, что-то не так, я ожидаю найти то же самое состояние, что и на первом снимке после замены фрагмента.

