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

Рейтинг: -3Ответов: 1Опубликовано: 02.05.2015

Решил переписать проект с использованием фрагментов и бокового меню. Логика работы: Программа показывает экран загрузки -> если нужно открывает окно авторизации или регистрации -> открывает экран с основным функционалом. Сейчас смена экранов реализована через setContentView(). Логика проста и очевидна: setContentView(R.layout.page); плюс обработчики нажатий на кнопки этого лайоута.

С фрагментами не понятно.

1) Главный класс должен быть фрагментом или активити?

2) Можете нарисовать структуру классов? Например, я вижу логику работы такой: LoadActivity() -> LoginOrRegisterFragment() -> MainFragment(); Или главный класс сделать фрагментом и в нем менять все странички?

3) Если сейчас один основной класс, то как работать если их станет несколько? Как вызывать нативные библиотеки и передавать данные между классами?

4) Есть примеры программ с фрагментами и боковым меню? К сожалению вот этот проект собрать так и не удалось из-за проблем со стилями: http://habrahabr.ru/post/236567/

5) Сейчас я ровняюсь на Телеграмм, мне нужно сделать такое же приложение. (И желательно быстро, а не натыкаясь на очередные грабли).

Ответы

▲ 2

Начнем с того, что простая и очевидная для вас логика подмены ContentView очень плохая практика в андроид-разработке - она приведет вас в тупик и к напрасно потраченному на бессмысленное времени.

  1. Без активити вы не сможете отобразить фрагмент, в этом плане она главная. Если вы о логике, то фрагмент - независимый от конкретной активити элемент интерфейса (должен быть таким) и соответсвенно, основная логика UI находится в нем - здесь он главный.

  2. Структура типичного приложения с нав.драйвером на фрагментах такова:

    Стартовая активити, реализующая NavigationDrawer, обрабатывающая клики в нав.драйвере и подменяющяя в себе фрагменты, соответствующие пунктам нав.драйвера -> фрагмент, соответствующий выбранному пункту -> активити дополнительного экрана (по возможности следует избегать вызова фрагментов из фрагментов)

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

  4. Есть такие прграммы, гитхаб полон таких программ. Ваша проблема в том, что большинство даже совсем начинающих разработчиков может собрать простейший учебный пример без проблем. Если это у вас не получается, как вы собираетесь собирать сложное приложение. Вы надеетесь, что найдется что то такое, что соберется не только у всех остальных, но и у вас тоже? Лучше всего вам сосредоточится сейчас на проблеме, почему у всех собирается, а у вас - нет. Что ВЫ делаете не так.

  5. Равнение вы себе выбрали нормальное. За сколько планируете написать такое? Неделя не больше, да? Чего там сложного, тем более без граблей - строчек пятьдесят кода :(

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