Помогите спроектировать Activity в Android приложении

Рейтинг: 0Ответов: 2Опубликовано: 31.03.2015

Задача: написать приложение с активити, которое меняет своё содержимое. Пример беру с приложения VK, где при выборе элемента меню слева (Друзья, Сообщения, Новости etc) содержимое основного активити меняется в соответствии с выбранным элементом.

Интересует, с помощью чего это реализовано. Пытался копать в сторону разных фрагментов и замены их друг другом, но не смог сформулировать вопрос поисковикам так, чтобы получить вразумительный ответ.

Собственно, суть вопроса: продолжать попытки сделать всё подменой нужных фрагментов (и является ли это вообще нормальным решением) или, может быть, правильно будет переподгружать лэйауты (или использовать какое-нибудь более удобное и менее "костыльное" решение)?

Ответы

▲ 2Принят

Правильно - через замену фрагментов. То, что вы описали - это стандартный паттерн от гугла. NavigationDrawer называется. Его просто нагуглить и в Eclipse и в AndroidStudio есть готовые шаблоны.

UPD_0:

Да, вместо смены фрагментов можно инфлэйтить другие лэйауты. Но, ИМХО, это менее удобно, чем использовать фрагменты.

1) Во-первых, в фрагментах используется как раз таки метод inflate для загрузки разметки.

2) К тому же у них есть жизненный цикл, а значит можно именно в них ловить события свёртывания приложения, например, и сохранять данные.

3) Используя FragmentManager можно легко настроить обратную навигацию по списку открытых фрагментов. Т.е. открываете по очереди 10 разных фрагментов и всего парой строк кода можете нажимая кнопку назад вернуться обратно по списку.

4) Так лучше модульность кода получается. Можно переиспользовать фрагменты в разных местах со всем их поведением.

Итого, на мой взгляд, подход с фрагментами гибче и правильней.

▲ 1

Вопрос достаточно обширный, т.к касается основ проектирования пользовательских интерфейсов.

И вариантов здесь, следовательно, много. Среди наиболее разумных можно выделить минимум два:

  • Использовать правильно спроектированные фрагменты. Именно "правильно спроектированные" с точки зрения раздробленности UI, потому как часто по неопытности этим понятием пренебрегают, разбивая по фрагментам чуть-ли не каждый элемент интерфейса и "пихая" фрагменты, куда только можно. Если будете следовать этому простому правилу и размышлять, прежде чем писать код, то этот метод становится наилучшим.
  • Следующий вариант - использование WebView и сопутствующих вебу технологий. Действительно, управлять HTML интерфейсом с помощью JS, наверное, самый удобный вариант для разработчиков любого ранга. Но вариант этот не слишком удобный и достаточно ресурсоемкий с точки зрения Android. Его можно отнести к разряду "костыльных". Поэтому его использование в данном случае можно посчитать уместным, если вы профильно разбираетесь в тонкостях оптимизации компонента WebView и тонкостях HTML\JS при написании разметки\кода для него.