2015-03-25 2 views
0

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

Существует 3 вида деятельности (A, B, C). Приложение начинается с A. Я могу перейти к B, который является простым списком, и каждый из элементов можно щелкнуть, чтобы показать элемент, более подробный в действии C. Должна быть «корневая» активность, поэтому я устанавливаю родительские действия в файл манифеста.

Теперь я хочу, чтобы навигация по B и C осуществлялась в режиме DrawerLayout, что на самом деле представляет A в меньшей степени.

Я создал абстрактный класс NavigationActivity, чтобы принять вид деятельности и установить как первый ребенок из DrawerLayout и добавить навигацию в качестве второго ребенка. Это работает очень хорошо, но поскольку в навигации есть состояние, я вставляю навигацию как фрагмент, потому что я думал, что состояние разделяется тогда, но это не так, и я не знаю, зачем вообще использовать фрагменты.

Должен ли я использовать одно действие и загружать различные фрагменты в качестве основного контента? Тогда мое приложение состоит из двух видов деятельности и, возможно, 50 фрагментов, когда я закончил. Я думаю, что способ, которым я пытаюсь его реализовать, неверен.

В качестве примера: когда вы входите в PlayStore, есть навигационная система слева. Вы можете просматривать приложение и так далее. Вы знаете/знаете, что это одно и то же действие с различным основным контентом или есть ли больше действий?

Вы можете мне помочь? Спасибо :)

ответ

0

Приложения для одиночной деятельности возможны, но не обязательно являются лучшей практикой. IMHO, фрагменты имеют очень сложный жизненный цикл, поэтому используйте Activituies, когда вы не используете фрагменты.

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

Не забудьте также сохранить это состояние во время уничтожения одного из ваших действий.

+0

Тем не менее я не получаю преимущество фрагмента. Я думал, что это общий доступ к действию, я могу получить как одиночный элемент, и состояние представления (например, выбранный элемент) остается в памяти после закрытия действия. – Aitch

+0

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

Смежные вопросы