Intereting Posts
BadTokenException: невозможно добавить окно Какую версию Android я должен разработать? Как добавить прописку / маржу между значком и кнопкой Up-Button ActionBar? Зарегистрировать учетные данные для входа в систему Android Параллельные HTTP-запросы с доработкой Android: запуск диалогового окна сведений о приложении через adb shell am Не удалось удалить оповещение на Android-леденец даже после нажатия уведомления даже после использования AUTOCANCEL Необходимый контекст в классах без активности Какой размер изображения следует разместить в нейтральной папке? Как изменить цвет заголовка в пользовательских вкладках Chrome ImeOption = "actionNext" не работает в TextInputLayout. Как настроить кнопку переключателя? Как установить пользовательский шрифт для диалогового окна предупреждения в Android? Android-эмулятор очень медленный Android определить, находится ли устройство в праве на левый язык / макет

Android – мне нужно уточнить фрагменты и действия и представления

В Android API 11+ Google выпустил новый класс под названием Fragment .

В видеороликах Google предлагает, что по возможности ( link1 , link2 ) мы должны использовать фрагменты вместо действий, но они не объяснили, почему именно.

Какова цель фрагментов и их возможное использование (за исключением некоторых примеров пользовательского интерфейса, которые могут быть легко достигнуты с помощью простых представлений / макетов)?

Мой вопрос о фрагментах:

  1. Каковы цели использования фрагмента?
  2. Каковы преимущества и недостатки использования фрагментов по сравнению с использованием действий / представлений / макетов?

Бонусные вопросы:

  1. Можете ли вы дать некоторые интересные приложения для фрагментов? Что Google не упоминал в своих видео?
  2. Каков наилучший способ общения между фрагментами и действиями, которые их содержат?
  3. Каковы наиболее важные вещи, которые следует помнить при использовании фрагментов? Какие-нибудь советы и предупреждения из вашего опыта?

# 1 & # 2, каковы цели использования фрагмента и каковы преимущества и недостатки использования фрагментов по сравнению с использованием действий / представлений / макетов?

Фрагменты – это решение Android для создания многоразовых пользовательских интерфейсов. Вы можете достичь одних и тех же вещей, используя действия и макеты (например, с помощью include). Однако; Фрагменты подключены к API Android, от HoneyComb и выше. Позвольте мне уточнить;

  • ActionBar . Если вам нужны закладки для навигации по вашему приложению, вы быстро увидите, что интерфейс ActionBar.TabListener дает вам FragmentTransaction в качестве входного аргумента методу onTabSelected . Возможно, вы проигнорируете это и сделаете что-нибудь еще и умное, но вы будете работать против API, а не с ним.

  • FragmentManager обрабатывает «назад» для вас очень умным способом. Назад не означает возврат к последнему действию, как для обычной деятельности. Это означает возврат к предыдущему состоянию фрагмента.

  • Вы можете использовать классный ViewPager с помощью FragmentPagerAdapter для создания интерфейсов swipe. Код FragmentPagerAdapter намного чище, чем обычный адаптер, и он управляет экземплярами отдельных фрагментов.

  • Ваша жизнь будет намного проще, если вы будете использовать Фрагменты при попытке создать приложения для телефонов и планшетов. Поскольку фрагменты настолько привязаны к API Honeycomb + API, вы захотите использовать их на телефонах, чтобы повторно использовать код. Вот где библиотека совместимости пригодится.

  • Вы даже могли и должны использовать фрагменты для приложений, предназначенных только для телефонов. Если у вас есть мобильность в виду. Я использую ActionBarSherlock и библиотеки совместимости для создания приложений «ICS look», которые выглядят одинаково вплоть до версии 1.6. Вы получаете последние функции, такие как ActionBar , с вкладками, переполнением, панель действий с разделом, просмотрщик и т. Д.

Бонус 2

Лучший способ общения между фрагментами – это намерения. Когда вы нажимаете что-то в фрагменте, вы обычно вызываете StartActivity() с данными на нем. Цель передается всем фрагментам запускаемой вами активности.

  1. Фрагмент является частью активности, которая вносит свой вклад в эту деятельность. Фрагмент можно рассматривать как суб-активность. Где как полный экран, с которым пользователь взаимодействует, называется активностью. Активность может содержать несколько фрагментов. Фрагменты – это главным образом часть действия.

  2. Активность может содержать 0 или несколько фрагментов на основе размера экрана. Фрагмент может быть повторно использован в нескольких действиях, поэтому он действует как компонент многократного использования в действиях.

  3. Фрагмент не может существовать независимо. Он всегда должен быть частью деятельности. Где, поскольку деятельность может существовать без какого-либо фрагмента.

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

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

Фрагмент – это часть пользовательского интерфейса приложения или поведения, который может быть помещен в Activity, который позволяет создавать более модульную структуру активности. Не будет ошибкой, если мы скажем, что фрагмент является своего рода субактивностью.

Ниже приведены важные моменты об фрагменте:

  1. Фрагмент имеет свой собственный макет и свое поведение с его собственными обратными вызовами жизненного цикла.

  2. Вы можете добавлять или удалять фрагменты в действии во время работы.

  3. Вы можете комбинировать несколько фрагментов в одном действии для создания пользовательского интерфейса с несколькими панелями.

  4. Фрагмент может использоваться в нескольких действиях.

  5. Жизненный цикл фрагмента тесно связан с жизненным циклом его активности хозяина.

  6. Когда действие приостановлено, все фрагменты, доступные в рабочей зоне, также будут остановлены.

  7. Фрагмент может реализовать поведение, не имеющее компонента пользовательского интерфейса.

  8. Фрагменты были добавлены в Android API в Android 3 (Honeycomb) с API версии 11.

Для получения дополнительной информации, пожалуйста, посетите официальный сайт, Фрагменты .

Это важная информация, которую я нашел на фрагментах:

Исторически каждый экран в приложении для Android был реализован как отдельный Activity. Это создает проблему передачи информации между экранами, поскольку механизм Android Intent не позволяет передавать ссылочный тип (т.е. объект) непосредственно между Activity. Вместо этого объект должен быть сериализован или доступен доступный по всему миру справочник.

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

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

Если вы использовали какое-либо действие, вам пришлось бы держать ящик во всех действиях, которые делают для избыточного кода. Это одно интересное использование фрагмента.

Я новичок в Android и до сих пор считаю, что фрагмент полезен именно так.

Я знаю, что это уже обсуждалось до смерти, но я хотел бы добавить еще несколько моментов:

  • Frags можно использовать для заполнения Menu s и может самостоятельно обрабатывать клики MenuItem . Таким образом, даются дополнительные варианты модуляции для вашей деятельности. Вы можете создавать материалы ContextualActionBar и т. Д., Не зная об этом, и можете в основном отделить его от основного материала, который обрабатывает ваша деятельность (Навигация / Настройки / О программе).

  • Родительский Frag с дочерними Frags может предоставить вам дополнительные возможности для модуляции ваших компонентов. Например, вы можете легко поменять Frags, поместить новые Frags внутри пейджера или удалить их, переставить их. Все без вашей активности, зная что-нибудь об этом, просто сосредотачиваются на материалах более высокого уровня.

Фрагмент живет внутри действия.

Хотя деятельность живет сама по себе.

Фрагменты живут в рамках Деятельности и имеют:

  • Собственный жизненный цикл
  • Его собственный макет
  • Его собственные дочерние фрагменты и т. Д.

Подумайте о Фрагментах как о субактивности основной деятельности, к которой она принадлежит, она не может существовать сама по себе и ее можно снова и снова называть / повторно использовать. Надеюсь это поможет 🙂