Предыдущая лекция |   | Следующая лекция :----------------:|:----------:|:----------------: [Проект погода (продолжение)](./weather2.md) | [Содержание](../readme.md#практика-разработка-мобильных-приложений) | [Android Navigation. Знакомство с BottomNavigationView.](./android_bottom_navigation.md) # Фрагменты >Содрано [отсюда](https://metanit.com/java/android/8.1.php) ## Введение во фрагменты Организация приложения на основе нескольких *activity* не всегда может быть оптимальной. Мир ОС Android довольно сильно фрагментирован и состоит из многих устройств. И если для мобильных аппаратов с небольшими экранами взаимодействие между разными *activity* выглядит довольно неплохо, то на больших экранах - планшетах, телевизорах окна *activity* смотрелись бы не очень в силу большого размера экрана. Собственно поэтому и появилась концепция фрагментов. **Фрагмент** представляет кусочек визуального интерфейса приложения, который может использоваться повторно и многократно. У фрагмента может быть собственный файл разметки (layout), у фрагментов есть свой собственный жизненный цикл. Фрагмент существует в контексте *activity* и имеет свой жизненный цикл, вне *activity* обособлено он существовать не может. Каждая *activity* может иметь несколько фрагментов. ![](../img/fragments_01.png) Для начала работы с фрагментами создадим новый проект с пустой MainActivity. Фактически фрагмент - это обычный класс, который наследуется от класса **Fragment**. Однако как и класс **Activity**, фрагмент может использовать xml-файлы разметки для определения графического интерфейса. И таким образом, мы можем добавить по отдельности класс, который представляет фрагмент, и файл xml для хранения в нем разметки интерфейса, который будет использовать фрагмент. Android Studio представляет готовый шаблон для добавления фрагмента. Для этого нажмем на папку, где находится класс **MainActivity**, правой кнопкой мыши и в появившемся меню выберем **New -> Fragment -> Fragment(Blank)**: ![Создание фрагмента](../img/fragments_02.png) >Обратите внимание на именование: имя класса состоит из описательной части (content) и суффикса, обозначающего тип элемента (fragment). Название файла разметки (layout) генерируется автоматически по названию класса. В файле разметки `fragment_content.xml` в качестве корневого контейнера по умолчанию используется **FrameLayout** ```xml ``` >В этом контейнере потомки никак не позиционируются и накладываются друг на друга. Можно либо задавать границы элементов потомков, либо положить другой контейнер (например, LinearLayout) и в него уже помещать все остальные. > >```xml > android:layout_width="match_parent" > android:layout_height="match_parent" > android:orientation="vertical"> >