Как заменить 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
    Исключение Android Google Cloud messaging register Можно ли получать уведомление, когда какой-либо провайдер местоположения включен / отключен, и выяснить, какое действие произошло? BluetoothAdapter.startScan () и BluetoothAdapter.startLeScan () Проблема Parse SDK Android Proguard Android: Почему имя андроида было принято как название начального действия? Android-файл с плохими разрешениями Общий переход элементов между фрагментами, которые относятся к разным видам деятельности в леденце на Android Почему он все время отображает размер экрана дюйма? Библиотека визитных карточек Android для среды SDK Почему Android использует концепцию Java вместо языка D или C или C ++? Но веб-браузер Chromium находится на C ++, его очень сложное совпадение Нужна помощь / предложения по обработке звука Android Google App Engine – конечные точки облаков – имя приложения не задано Сброс и база данных SQLite на Android Скрытие пользовательского интерфейса системы на Lollipop Плохой магический номер для Bundle в Android