Телефонуйте » (+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)

Новини

  • Модуль SMARC запускає Android або Linux на Snapdragon 820
    Модуль SMARC запускає Android або Linux на Snapdragon 820

    SMART 2.0 "Snapdragon 820 SOM" iWave має 3 Гб LPDDR4, 32 Гб eMMC, Wi-Fi та Bluetooth, а також вхідні/вихідні виводи, включаючи GbE, HDMI 2.0, MIPI-CSI, USB 3.0 та PCIe. Комп'ютер розміром 82x50 мм працює на ОС Android Snailbone або вище, з наступною підтримкою Linux. Snapdragon 820 об'єднує чотири 14-нм Cortex з технологією FinFET - два на частоті 2,15 ГГц, а два з 1,6 ГГц, які намагаються імітувати високоякісні Cortex-A72. Крім того, SoC оснащений 624 МГц Adreno 530 GPU, Hexagon 680 DSP і 14-розрядним ISP для Spectra. Snapdragon 820 SOM підтримує кодування H.265 4K@60 та кодування 4K@30.

    in Новини

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