3.1 Создание Фрагмента Android Studio

Вы можете представить фрагмент как модуль в Activity, который имеет свой собственный жизненный цикл, получает свои собственные входные события и которые вы можете добавлять или удалять во время работы (вроде как «вспомогательная активность»). В этом уроке показано, как расширить класс Fragment с помощью библиотеки поддержки, чтобы ваше приложение оставалось совместимым с устройствами, работающими на системных версиях начиная с Android 1.6.

Прежде чем начать этот урок, вы должны настроить проект Android для использования Support Library. Если вы еще не использовали библиотеку поддержки, настройте проект на использование библиотеки v4, следуя документу Setup Library Setup. Другой вариант: включите app bar в Activity своего приложения, она использует библиотеку v7 appcompat, которая в свою очередь совместима с Android 2.1 (API уровня 7), а также включает в себя API-интерфейсы фрагментов.

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

Чтобы создать фрагмент, расширьте класс Fragment, затем переопределите методы жизненного цикла фрагмента, чтобы вставить логику приложения, аналогично тому, как вы бы с классом Activity.

Одно отличие при создании фрагмента заключается в том, что для определения макета необходимо использовать обратный вызов 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) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

Подобно Activity , фрагмент должен реализовывать другие обратные вызовы жизненного цикла, которые позволяют управлять своим состоянием, когда он добавляется или удаляется из Activity , а также как переходы Activity между состояниями жизненного цикла. Например, когда вызывается метод onPause (), любые фрагменты в активности также получают вызов onPause ().

Более подробную информацию о методах жизненного цикла фрагмента и методах обратного вызова можно найти в руководстве разработчика Fragments.

Добавление фрагмента в действие с использованием XML

Хотя созданные фрагменты можно использовать несколько раз, как модульные компоненты пользовательского интерфейса, но каждый экземпляр класса Fragment должен быть связан с родительским FragmentActivity. Вы можете достичь этой ассоциации, определив каждый фрагмент в XML-файле макета.

Примечание. FragmentActivity – это специальная Activity , предоставляемая в Support Library для обработки фрагментов на системных версиях старше API уровня 11. Если самая низкая поддерживаемая вами версия системы – это уровень API 11 или выше, вы можете использовать обычное Activity.

Вот пример файла макета, который добавляет два фрагмента к активности, когда экран устройства считается «большим» (“большой” определителяется в имени каталога).

res/layout-large/news_articles.xml

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

     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" />

     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" />

Совет. Дополнительные сведения о создании макетов для разных размеров экрана см. В разделе «Поддержка разных размеров экрана» (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);
    }
}

Если вы используете библиотеку appcompat v7, ваша Activity должна вместо этого расширять AppCompatActivity, которая является подклассом FragmentActivity. Для получения дополнительной информации см. «Добавление панели приложений» Adding the App Bar).

Примечание. Когда вы добавляете фрагмент в макет Activity , определяя фрагмент в XML-файле макета, вы не можете удалить фрагмент во время выполнения. Если вы планируете менять свои фрагменты во время взаимодействия с пользователем, вы должны добавить фрагмент к Activity при первом запуске. О том как это сделать  – в следующем уроке.

You may also like...

Добавить комментарий

Ваш e-mail не будет опубликован.

Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.
Регистрация не требуется. В качестве логина укажите рабочую почту, в качестве пароля - пароль от компьютера.