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

Новини

  • SDR в IoT

    iotSDR пропонує платформу розробок для IoT-радіо та мережевих доменів. На платі два передавачі Microchip AT86RF215, для вводу-виводу модему на Xilinx ZYNQ SoC, приймач GNSS MAX2769 для GPS, Galileo, BieDou та Glonass. Плата сумісна з ПЗ GNURadio SDR. Дозволяє розробити протоколи фізичного рівня LoRa, SigFox, WightLess, Bluetooth, BLE, 802.15.4, ZigBee тощо для IoT, або шлюз IoT через TheThingsNetwork, LPWAN або Google Thread. Пам'ять EEPROM: 1x AT24MAC602 , flash-пам'ять: 1x QSPI 128 Мб, RAM: 256 MБ DDR3,слот для Micro SD карти, входи/виходи: 2x 8-бітних інтерфейси PL, інтерфейс 8-бітного PS, Gigabit Ethernet, USB 2.0 (USB3310), USB 2.0 (CP2104), 2x SMA RF-роз'єми для приймача діапазонів IoT, 2x SMA RF-роз'єми для приймача 2,4 ГГц , RF-роз'єм приймач GNSS, FPGA-роз'єм JTAG для програмування. Розміри плати: 76,2 мм x 101,6 мм.

     

    in Новини

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