Телефонуйте » (+38) 096 227 41 41

Сприймайте фрагмент як модульну частині activity, яка має свій власний життєвий цикл, отримує свої вхідні події, яку ви можете додати або видалити, поки запущена activity (сортувати подібно "sub activity", яку можете використовувати в різних activity).

Цей урок показує, як розширити клас Fragment використовуючи Support Library так, щоб ваш додаток залишався сумісним з пристроями під управлінням настільки старих версій системи, як Android 1.6.

Примітка: Якщо вирішите, що мінімальний рівень API вашого додатка вимагає 11 або вище, то вам не треба використовувати Support Library і можете замість неї використовувати фреймворк, вбудований в клас Fragment і суміжні API. Просто знайте, що даний урок зосереджений на використанні API з Support Library, який використовує певний підписаний пакет та іноді трохи різні імена API, ніж версії, включені в платформу.

Перш ніж почати цей урок, ви повинні налаштувати Android-проект на використання Support Library. Якщо ви не використовували Support Library раніше, то налаштуйте проект на використання бібліотеки v4, слідуючи документу Support Library Setup. Тим не менш, ви також можете включити панель дій у ваші activity, використовуючи натомість бібліотеку v7 appcompat, яка сумісна з Android 2.1 (API рівня 7), а також включає в себе API Fragment.

Створення класу Fragment

Щоб створити фрагмент, розширіть клас Fragment, потім перевизначте ключові методи життєвого циклу для вставки логіки вашого додаток, подібно до того, як ви б робили з класом Activity.
Одна з відмінностей при створенні Fragment, це те, що ви повинні використовувати зворотний виклик onCreateView(), щоб визначити макет. Насправді, цей зворотний виклик вам потрібний тільки для того, щоб запустити фрагмент. Для прикладу, простий фрагмент, який визначає власний макет:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;

public class ArticleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Накачайте макет для цього фрагменту
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

Так само, як activity, фрагмент повинен здійснювати інші функції зворотного виклику життєвого циклу, які дозволяють вам управляти його станом, який додається або видаляється з activity і як activity переходить між своїми станами життєвого циклу. Наприклад, коли викликається метод onPause() activity, будь-які фрагменти в activity також отримують виклик onPause().
Більш детальну інформацію про життєвий цикл фрагменту і методи зворотного виклику в керівництві з розробки Fragments.

Додавання фрагменту в Activity з використанням XML

Оскільки, фрагменти багаторазові, то модульні компоненти користувальницького інтерфейсу (UI), кожен екземпляр класу Fragment повинні бути пов'язані з батьківським FragmentActivity. Ви можете досягти цього об'єднання, визначаючи кожен фрагмент у XML файлі макету вашої activity.

Примітка: FragmentActivity - це спеціальна activity з умовою в Support Library обробляти фрагменти версій системних старіших 11 рівня API. Якщо низька версія системи, підтримувана вами є рівнем 11 API або вище, то можете використовувати регулярну Activity.

Приклад файлу макета, який додає два фрагменти до activity, коли екран пристрою вважається "великим" (вказаний позначенням large в імені каталогу):

res/layout-large/news_articles.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name="com.example.android.fragments.ArticleFragment"
              android:id="@+id/article_fragment"
              android:layout_weight="2"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

Порада: Щоб дізнатися більше про створення макетів для екранів різних розмірів, читайте Supporting Different Screen Sizes

Потім застосуйте макет до вашої activity:

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
}

Якщо використовуєте v7 appcompat library, то ваша activity повинна використовувати розширення ActionBarActivity, яке є підкласом FragmentActivity (для отримання додаткової інформації, читайте про встановлення панелі дій).

Примітка: Коли ви додаєте фрагмент в макет activity шляхом визначення фрагмента в XML файлі макета, то не зможете видалити фрагмент під час виконання. Якщо плануєте поміняти свої фрагменти при і протягом взаємодії з користувачем, то повинні додати фрагмент в activity перш, ніж activity буде запущена, як показано в наступному уроці.

(Джерело: developer.android.com)

Новини

  • Плати розширення з 8-реле підтримують до 64 реле на Raspberry Pi
    Плати розширення з 8-реле підтримують до 64 реле на Raspberry Pi

    "Raspberry Pi 8-Relay Card" від Sequent Microsystems забезпечує керування 8 реле і може бути розширена для включення 64 реле на Raspberry Pi для додатків домашньої автоматизації. Плата може використовувати Raspberry Pi 2, 3, або Zero. У випадку Zero чи Zero W потрібно придбати та приєднати 40-контактний роз’єм, або придбати Raspberry Pi Zero WH з вже припаяним роз’ємом. Вам також знадобиться картка microSD на 8 ГБ, джерело живлення 5 В та трансформатор на 24 В. Вартість плати стартує з 17$.

    in Новини

Записатися на курс