Я не могу понять один важный аспект разработки программного обеспечения для Android, с которым я только начинаю, из того, что я знаю, Fragment
дизайн был принят для того, чтобы отделить код, где интуиция такова, что Activity
остается как есть, и Fragment
может быть повторно использованным в другом месте, может быть, даже в другом действии, или, может быть, вместе с другими фрагментами, в чем-то вроде потока Master/Detail или ландшафтного пользовательского интерфейса.
Хорошо, поэтому я видел довольно много вопросов о SO, спрашивающих, почему Fragments
помещаются как статические внутренние классы в Activity
, и ответ заключается в том, что если мы не сделаем их статическими, Fragment
может содержать ссылку на активность и что-то вроде поворота экрана или перерисовки может привести к утечке активности или что-то в этом роде.
Это возвращает меня к исходной точке, и у меня есть вопрос: ну, если дизайн фрагмента был принят для того, чтобы отделить код, то почему мы объединяем Fragment
с Activity
, помещая его внутри класс активности и не помещать их в отдельные публичные классы? Разве это не противоречит самому существованию Фрагментов?
Какова обратная сторона структуры проекта как таковой? Где каждый Fragment
является отдельным классом? Учитывая, что мой код фрагмента может вырасти до 1000 строк, особенно при попытке сделать анимацию, я вижу это как гораздо более аккуратное, развязанное и повторно используемое в действиях, отличных от предполагаемого родительского действия.
- Мы все еще страдаем от упомянутой выше проблемы с утечкой памяти?
- Я что-то упустил в логике дизайна? Пожалуйста, просветите меня.
- Есть ли способ, чтобы фрагменты оставались внутренним классом и по-прежнему использовались в других местах? Возможно, я тоже что-то упускаю... так что сообщите мне.
Любые другие методы проектирования проектов, концепции, поправки к моей интуиции более чем приветствуются, так как я только начинаю здесь, я хотел бы знать все свои варианты.
Спасибо :)
OuterClass.InnerFragment
, используйте толькоInnerFragment
в пределахOuterClass
. Фрагменты должны быть модульными; размещение их внутри какого-либо другого класса снижает модульность. 06.09.2014