24

Could somebody please explain the exact advantages of using Fragments? In what cases should we use Fragments?

For what I understand, this framework:

  • Helps reuse existing code - if I implement functionality in a Fragment, then it's relatively easy to display this fragment in multiple parts of my app, when the functionality is needed.

  • Helps dealing with multiple screen sizes - a device with a huge screen may be able to display multiple fragments at once, and for smaller devices I can display the fragments in separate Activities.

Is there more to this framework?

Edit:

I've been using Fragments quite extensively in a larger project for 3.0 tablets. To me the greatest advantage was that using fragments I could break up the logic that would go in a single, monolithic Activity into multiple, smaller Fragments. Big screens mean huge Activities, difficult to read, understand (especially to new team members), develop and maintain. Fragments certainly helped in this matter.

Zsombor Erdődy-Nagy
  • 16,864
  • 16
  • 76
  • 101
  • 1
    I share your confusion, since it's always been easy to customize `View`s which seems (to me) to solve all the same problems. – Jim Blackler Apr 17 '11 at 18:17

1 Answers1

23

Is there more to this framework?

  • Animated effects available when dynamically adding and removing fragments from the screen

  • Automatic BACK stack management, so the BACK button can remove dynamically-added fragments before eventually exiting the activity

  • Integration with the action bar for tabs, as a replacement for TabHost

  • Integration with the action bar for "list"-based navigation (really a Spinner in the action bar, toggling between different fragments)

  • Somewhat easier handling of configuration changes courtesy of setRetainInstance(true)

Also, responding to @Jim Blackler:

I share your confusion, since it's always been easy to customize Views which seems (to me) to solve all the same problems.

Everything offered by fragments can, by definition, be done using Views, simply because fragments are built on top of the view framework. However, fragments make more complicated scenarios involving dynamic fragments a bit easier IMHO.

Moreover, fragments in conjunction with the action bar seem quite likely to be a long-term area of attention for Google, meaning I expect a fair amount of additional work in this area over the next 2-3 releases.

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491