Как заменить ViewPager на фрагмент

У меня есть следующий макет

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager> 

Everyting отлично работает, но я хочу заменить ViewPager фрагментом

 getSupportFragmentManager().beginTransaction() .replace(R.id.view_pager, new CustomFragment()) .commit(); 

Это не поменяет ViewPager, что мне делать ???

    Вы можете создать фрагмент, содержащий ViewPager, а затем заменить этот фрагмент.

     public class ViewPagerContainerFragment extends Fragment { private ViewPager mViewPager; public ViewPagerContainerFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.view_pager_container_fragment, container, false); // Set up the ViewPager, attaching the adapter and ... mViewPager = (ViewPager) root.findViewById(R.id.viewPager); // do other stuff... return root; } } 

    view_pager_container_fragment.xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/rlMain" android:layout_width="fill_parent" android:layout_height="fill_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </RelativeLayout> 

    Файл вашей деятельности .xml:

      <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> 

    Затем замените фрагменты следующим образом:

    Добавление ViewPagerContainerFragment в макет Activity:

     getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, new ViewPagerContainerFragment()) .commit(); 

    И где-нибудь позже в коде: (если вы хотите – заменить ViewPagerFragment другим фрагментом)

     getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, new CustomFragment()) .commit(); 

    Убедитесь, что вы не создаете утечек памяти и правильно настроили свой адаптер.

    Intereting Posts
    Класс Mock для приложений Android с использованием Robolectric в приложении с кинжалом 2 Android O: Ресурс не найден для API ниже, чем Android O Более простой способ получить идентификатор (строку) представления по его идентификатору (int) В чем разница между onPresentScreen и onLeaveApplication? ImageButton: Значок Force square (высота = WRAP_CONTENT, width =?) Как использовать класс MediaCodec для декодирования потоков H.264 Запретить строку состояния для появления андроида (изменено) Где я должен инициализировать ресурсы для Android Live Wallpaper Как сделать прослушиватель прокрутки для WebView в Android Маржа между элементами просмотра recycler Android CollapsingToolbarLayout | Проблемы с прокруткой и компоновкой Исключение, возникающее во время рендеринга: Не удалось найти значение соответствия ресурса макета 0x7F04001B (разрешенное имя: content_main) в текущей конфигурации Android возвращается к первому действию при нажатии кнопки Чтение нескольких тегов NFC одновременно на Android Определение размера текста для Canvas.drawText () в res / values ​​/ dimens.xml