Thursday 26 October 2017

android - Why fragments, and when to use fragments instead of activities?

itemprop="text">


In Android API 11+, Google
has released a new class called
Fragment.



In the
videos, Google suggests that whenever possible ( href="https://www.youtube.com/watch?v=WGIU2JX1U5Y" rel="noreferrer">link1,
rel="noreferrer">link2), we should use fragments instead of activities, but
they didn't explain exactly why.



What's the
purpose of fragments and some possible uses of them (other than some UI examples that
can be easily be achieved by simple
views/layouts)?



My question is about
fragments:





  1. What
    are the purposes of using a fragment?

  2. What are the
    advantages and disadvantages of using fragments compared to using
    activities/views/layouts?



Bonus
questions:




  1. Can
    you give some really interesting uses for fragments? Things that Google didn't mention
    in their videos?

  2. What's the best way to communicate
    between fragments and the activities that contain
    them?

  3. What are the most important things to remember when
    you use fragments? Any tips and warnings from your
    experience?



class="post-text" itemprop="text">
class="normal">Answer





#1 & #2
what are the purposes of using a fragment & what are the
advantages and
disadvantages of using fragments compared to using

activities/views/layouts?




Fragments
are Android's solution to creating reusable user interfaces. You can achieve some of the
same things using activities and layouts (for example by using includes). However;
fragments are wired in to the Android API, from HoneyComb, and up. Let me
elaborate;





  • The
    ActionBar. If you want tabs up there to navigate your app, you
    quickly see that ActionBar.TabListener interface gives you a
    FragmentTransaction as an input argument to the
    onTabSelected method. You could probably ignore this, and do
    something else and clever, but you'd be working against the API, not with
    it.


  • The
    FragmentManager handles «back» for you in a very clever way.
    Back does not mean back to the last activity, like for regular activities. It means back
    to the previous fragment state.


  • You
    can use the cool ViewPager with a
    FragmentPagerAdapter to create swipe interfaces. The
    FragmentPagerAdapter code is much cleaner than a regular
    adapter, and it controls instantiations of the individual
    fragments.


  • Your life will be a lot
    easier if you use Fragments when you try to create applications for both phones and
    tablets. Since the fragments are so tied in with the Honeycomb+ APIs, you will want to
    use them on phones as well to reuse code. That's where the compatibility library comes
    in handy.


  • You even could and should
    use fragments for apps meant for phones only. If you have portability in mind. I use
    ActionBarSherlock and the compatibility libraries to create
    "ICS looking" apps, that look the same all the way back to version 1.6. You get the
    latest features like the ActionBar, with tabs, overflow, split
    action bar, viewpager
    etc.






Bonus
2





The
best way to communicate between fragments are intents. When you press something in a
Fragment you would typically call StartActivity() with data on
it. The intent is passed on to all fragments of the activity you
launch.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...