1.1 Создание фрагментов и настройка макетов

Откроем готовое приложение из прошлой лабораторной работы.

Создадим package под названием fragments и добавим создадим два класса фрагментов: ContactsFragment и AddContactFragment. Создать фрагменты вы можете вручную или с помощью мастера (File -> New -> Fragment -> Fragment (Blank)).

В рамках данного приложения мы не будем передавать данные фрагменту через конструктор, поэтому можно убрать код для передачи данных через фабричный метод. Если вы создаете фрагменты вручную, не забудьте создать макеты для этих фрагментов.

public class AddContactFragment extends Fragment {

    public AddContactFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_add_contact, container, false);
    }
}

Теперь необходимо настроить макеты для фрагментов.

Сначала настроим макет для AddContactFragment. Так как вместо двух activity мы будем использовать один activity и два фрагмента, то окно AddContactActivity нам не нужно, макет activity_add_conctact.xml без изменений переносится в макет fragment_add_contact.xml. Измените атрибут tools:context на .MainActivity в корневом контейнере.

Теперь настроим макет для ContactsFragment. Скопируем макет activity_main.xml в fragment_contacts.xml .

В макете activity_main.xml нам необходимо предусмотреть контейнер для добавления туда фрагментов. При использовании фрагментов очень часто будет возникать ситуация, когда макет activity будет включать только контейнер для фрагментов, тогда как вся обработка событий в UI и элементы интерфейс будут содержаться в фрагментах.

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    android:id="@+id/container"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity" />

Last updated