Зачем использовать фрагменты?

Я прочитал темы документации и некоторые другие вопросы по этой теме, и я действительно не уверен в этом; Я не вижу ясных пределов использования этой техники.

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

Фрагменты создаются для:

  1. Разрешить Activity использовать много фрагментов, изменять их между собой, повторно использовать эти единицы … ==> Fragment полностью зависит от Context активности, поэтому, если мне нужно что-то общее, что я могу повторно использовать и обрабатывать во многих действиях , Я могу создать свои собственные собственные макеты или представления … Мне не понравится этот дополнительный уровень сложности, который будут добавлять фрагменты.

  2. Лучше справляться с разным разрешением ==> OK для планшетов / телефонов в случае длительного процесса, что мы можем показать два (или более) фрагмента в одной и той же Activity в планшетах и ​​один за другим в телефонах. Но почему я должен использовать фрагменты всегда ?

  3. Обработка обратных вызовов для перемещения между фрагментами (то есть: если пользователь зарегистрирован, я покажу фрагмент еще, я покажу другой фрагмент). ===> Просто попробуйте узнать, сколько ошибок в facebook SDK Log-in из-за этого, чтобы понять, что это действительно (?) …

  4. Учитывая, что приложение для Android основано на действиях … Добавление других жизненных циклов в Activity было бы лучше для разработки приложения … Я имею в виду, что модули, сценарии, управление данными и возможность подключения будут лучше разработаны, поскольку путь. ===> Это ответ того, кто привык видеть Android SDK и Android Framework с видением Фрагментов. Я не думаю, что это неправильно, но я не уверен, что это даст хорошие результаты … И это действительно абстрактно …

====> Почему я должен усложнять свою жизнь, кодируя больше, используя их всегда? Иначе, почему это лучшая практика, если это просто инструмент для некоторых случаев? Каковы эти случаи?

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

С уважением, Ахмед

Вы не всегда должны использовать фрагменты. Фрагменты имеют свое применение, например, когда вы хотите размещать страницы на экране и выходить из нее, или когда вы хотите радикально изменить интерфейс в разных направлениях. Когда они имеют смысл, используйте их. Когда они этого не сделают, пропустите их. Я нахожу, что они имеют смысл примерно в 10-20% приложений – я редко вижу необходимость.

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

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

Это довольно общий вопрос и не имеет прямого отношения к конкретной проблеме программирования. Но, на мой взгляд, хорошее программное обеспечение основано на хорошем дизайне и, следовательно, на хорошем понимании и передовой практике. Таким образом, ваш вопрос является хорошим для stackoverflow.

Итак, как насчет фрагментов. Мне потребовалось некоторое время, чтобы понять, почему вы можете или даже должны их использовать. Как сказал @pskink, вы можете без проблем жить без них. Но если вы планируете развертывать свое программное обеспечение на разных устройствах, вы должны обязательно подумать о фрагментах.

Разрешение экрана и плотность не являются единственной проблемой. Подумайте о смартфоне. Экран намного меньше, поэтому вы не можете представить свое приложение так же, как на планшете. Например, поток основных деталей. Левая сторона, список элементов, и когда вы нажимаете один элемент, вы увидите детали этого элемента с правой стороны. Легко сделать на планшете. Но на смартфоне вы должны поместить мастер-просмотр в один фрагмент, а подробный – в другой.

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