Введение во фрагменты | Android

Опубликовано: 14 Июля, 2021

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

На изображении ниже показано, как два модуля пользовательского интерфейса, определенные фрагментами, могут быть объединены в одно действие для дизайна планшета, но разделены для дизайна телефона.

Жизненный цикл фрагмента

Фрагменты Android имеют собственный жизненный цикл, очень похожий на активность Android.

  • onAttach (): экземпляр фрагмента связан с экземпляром действия. Фрагмент и действие не полностью инициализированы. Обычно в этом методе вы получаете ссылку на действие, которое использует фрагмент для дальнейшей работы по инициализации.
  • onCreate (): система вызывает этот метод при создании фрагмента. Вы должны инициализировать основные компоненты фрагмента, которые вы хотите сохранить, когда фрагмент приостановлен или остановлен, а затем возобновлен.
  • onCreateView (): система вызывает этот обратный вызов, когда пора фрагменту отрисовывать свой пользовательский интерфейс в первый раз. Чтобы нарисовать пользовательский интерфейс для вашего фрагмента, вы должны вернуть компонент View из этого метода, который является корнем макета вашего фрагмента. Вы можете вернуть null, если фрагмент не предоставляет пользовательский интерфейс.
  • onActivityCreated (): onActivityCreated () вызывается после метода onCreateView () при создании активности узла. Были созданы действие и экземпляр фрагмента, а также иерархия представления действия. На этом этапе представление можно получить с помощью метода findViewById (). пример. В этом методе вы можете создавать экземпляры объектов, которым требуется объект Context.
  • onStart (): метод onStart () вызывается, когда фрагмент становится видимым.
  • onResume (): фрагмент становится активным.
  • onPause (): система вызывает этот метод как первое указание на то, что пользователь покидает фрагмент. Обычно именно здесь вы должны зафиксировать любые изменения, которые должны сохраняться после текущего сеанса пользователя.
  • onStop (): фрагмент будет остановлен вызовом onStop ()
  • onDestroyView (): представление фрагмента будет уничтожено после вызова этого метода
  • onDestroy (): вызывается для окончательной очистки состояния фрагмента, но не гарантируется, что он будет вызываться платформой Android.

Типы фрагментов

  • Фрагменты одного кадра : фрагменты одного кадра используются для ручных устройств, таких как мобильные телефоны, здесь мы можем показать только один фрагмент в качестве представления.
  • Фрагменты списка : фрагменты, имеющие специальное представление списка, называются фрагментом списка
  • Транзакция фрагментов : использование с транзакцией фрагментов. мы можем переместить один фрагмент в другой.

Обработка жизненного цикла фрагмента

Фрагмент существует в трех состояниях:

  • Возобновлено: фрагмент виден в текущей деятельности.
  • Приостановлено: другое действие находится на переднем плане и имеет фокус, но действие, в котором находится этот фрагмент, все еще видно (действие переднего плана частично прозрачно или не покрывает весь экран).
  • Остановлено: фрагмент не виден. Либо активность хоста была остановлена, либо фрагмент был удален из активности, но добавлен в задний стек. Остановленный фрагмент все еще жив (вся информация о состоянии и членах сохраняется в системе). Однако он больше не виден пользователю и будет убит, если действие будет прекращено.

Влияние жизненного цикла активности на жизненный цикл фрагмента:

Определение и использование фрагментов

Чтобы определить новый фрагмент, мы либо расширяем класс android.app.Fragment, либо один из его подклассов.




package com.saket.geeksforgeeks.demo;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class DetailFragment extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_rssitem_detail,
container, false );
return view;
}
public void setText(String text)
{
TextView view = (TextView) getView().findViewById(R.id.detailsText);
view.setText(text);
}
}

Фрагментная транзакция: в то время как для динамического действия мы устанавливаем кнопки для интерактивного пользовательского интерфейса. Если мы настроены после нажатия кнопки, фрагмент должен появиться, тогда нам нужно получить помощь от диспетчера фрагментов. Он обрабатывает весь фрагмент действия. Нам нужно установить транзакцию фрагмента с помощью диспетчера фрагментов и начать транзакцию, а затем просто заменить макет фрагмента на желаемое место.




/* this code is contributed by rohansadhukhan9 */
Button B = findViewById(R.id.button);
B.setOnClickListener( new View.OnClickListener) {
@Override
public void onClick(View v) {
fragment f = new fragment();
FragmentTransaction t = getSupportFragmentManeger().beginTransaction();
t.replace(R.id.fragment_layout, f).commit();
}
}

Эта статья предоставлена Сакет Кумар . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.