SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
WORKING WITH FRAGMENTS
Android Developer Days 2013
Can Elmas
Saturday, June 15, 13
ABOUT ME
• Pozitron, since 2007
• Backend and client side experience
• SoftwareTeam Leader at the moment
Saturday, June 15, 13
AGENDA
• Overview
• When to Use?
• Managing Fragments
• Fragment Operations
• Demo(s)
Saturday, June 15, 13
OVERVIEW
• Introduced with Honeycomb (API 11)
• Modular section of an activity / Part of a user interface*
• More dynamic and flexible UI on large screens
• Reusability across activities
• Supported via Compatibility Package
* can also exist without user interface; Headless fragments
Saturday, June 15, 13
OVERVIEW
• Embedded in activities
• Lives in aViewGroup inside the activity’s view hierarchy
• Its own layout and behavior with its own life-cycle
Saturday, June 15, 13
WHENTO USE?
• Large screens - multi pane, flexible UI
• Combined with other UI widgets, ActionBar,ViewPager,
NavigationDrawer etc. - beautiful native app!
• More flexible, smooth, compact app with less activities;
multiple fragments in a single activity
Saturday, June 15, 13
http://developer.android.com/guide/components/fragments.html
Use Case -Tablet vs Handset
Saturday, June 15, 13
Use Case - Quora App Action Bar Navigation
Saturday, June 15, 13
Use Case - Quora AppView Pager
swipe
Saturday, June 15, 13
Use Case -YouTube Navigation Drawer
Saturday, June 15, 13
Saturday, June 15, 13
onCreate(Bundle) called once the fragment is
associated with its activity. Activity is still in the process
of being created.
Do not depend on activity’s layout
onCreateView(LayoutInflater, ViewGroup,
Bundle) time to instantiate for the fragment’s user
interface (optional, return null for non-graphical
fragments)
onActivityCreated(Bundle) called once the
activity is created and fragment’s view is instantiated.
Do final initializations (context dependent instantiations,
retrieving views, adding listeners etc.)
onDestroyView() Called when the view has been
detached from the fragment. Next time the fragment
needs to be displayed, a new view will be created.
Saturday, June 15, 13
MANAGING FRAGMENTS
• FragmentManager to interact with fragments inside an
Activity
• Activity.getFragmentManager()
• android.support.v4.app.FragmentActivity.getSupportFragmentMa
nager()
• FragmentTransaction to perform fragment operations :
add, remove, replace, hide at run-time etc.
Saturday, June 15, 13
ADDING FRAGMENTS -
STATIC
• <fragment> element in the activity’s layout XML
• Preferable if the fragment is consistent in the layout
• Limits run-time fragment operations; can’t remove
Saturday, June 15, 13
DEMO
Saturday, June 15, 13
TAKE AWAYS
• Use Support Library for backward compatibility
• android.support.v4.app.FragmentActivity
• android.support.v4.app.Fragment
• FragmentActivity.getSupportFragmentManager()
• Use different layouts to support multiple screen sizes
• Static Instantiation limits run time fragment operations
Saturday, June 15, 13
TAKE AWAYS
• Fragment to Fragment communication via callbacks to the
Activity; inner type interfaces defined in fragments
• Avoid tight coupling between activities and fragments
• To access activity from fragment, Fragment.getActivity()
• To access fragment from activity
• FragmentManager.findFragmentById(int id)
• FragmentManager.findFragmentByTag(String tag)
Saturday, June 15, 13
FRAGMENT OPERATIONS
• add - Add a fragment to the activity
• remove - Remove an existing fragment; its view is also
removed
• replace - Remove one fragment from the activity and add
another
• hide - Hides an existing fragment; its view is hidden
• show - Show previously hidden fragment
Saturday, June 15, 13
FRAGMENTTRANSACTIONS
• commit() resolves in the main thread
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_container, fragment);
ft.commit();
Saturday, June 15, 13
FRAGMENT BACK STACK
• Similar to activity back stack
• Allow user to navigate backward
• Ability to save fragment transaction onto back stack
• Managed by activity on back button press
• Activity destroyed once all fragment transactions removed
from the back stack and back button is pressed again
Saturday, June 15, 13
FRAGMENT BACK STACK
• FragmentTransaction.addToBackStack(String)
• null or optional identifier name for the back stack state
• Useful for returning to a given state by calling
FragmentManager’s popBackStack methods
• popBackStack() : Pop the top state off the back stack
• popBackStack(String name, int flags) : pop all states up to the
named state.Also pops this state if
POP_BACK_STACK_INCLUSIVE flag is set.
Saturday, June 15, 13
FRAGMENT BACK STACK
Fragment A
ft.add(R.id.fragment_container, fragmentA);
ft.addToBackStack("fragStackA")
Fragment A
Fragment B1
1.
2.
Fragment A
Fragment B
Fragment C2
ft.add(R.id.fragment_container, fragmentB);
3
ft.add(R.id.fragment_container, fragmentC);3.
Saturday, June 15, 13
FRAGMENT BACK STACK
Fragment A Fragment A
Fragment B1
Fragment A
Fragment B
Fragment C2 3
4.
4
FragmentManager fm = getSupportFragmentManager();
fm.popBackStack("fragStackA", 0);
Saturday, June 15, 13
FRAGMENT BACK STACK
Fragment A Fragment A
Fragment B1
Fragment A
Fragment B
Fragment C2 3
4.
4
FragmentManager fm = getSupportFragmentManager();
fm.popBackStack("fragStackA", POP_BACK_STACK_INCLUSIVE);
Saturday, June 15, 13
DEMO
Saturday, June 15, 13
TAKE AWAYS
• Depending on your requirements choose one of the paths :
• add add add...
• replace - navigating back to a removed and back stacked
state triggers onCreateView() to be called again
• hide/add - might require keep tracking of current fragment
to hide
• re-draw or re-initialize ?
Saturday, June 15, 13
TAKE AWAYS
• Add fragment transactions to back stack when necessary
• Use custom animations for fragment transactions :
FragmentTransaction.setCustomAnimations(enter, exit, popEnter,
popExit)
• ActionBar,ViewPager, MapFragment to provide beautiful,
flexible and more native user interfaces
Saturday, June 15, 13
TAKE AWAYS
• ActionBarSherlock (http://actionbarsherlock.com)
• extension to support library to provide action bar design
across all Android versions
• SherlockFragmentActivity
• SherlockFragment
Saturday, June 15, 13
TAKE AWAYS
• ViewPager
• available with support library
• flip left/right through pages of data
• SupportMapFragment
• google_play_service.jar required
• google play services should be installed on device
Saturday, June 15, 13
TAKE AWAYS
• Update action bar state (title, options items etc.) from
fragments
• "static factory method" to initialize fragments
• Pass data to fragments via Fragment.setArguments(Bundle) and
Fragments.getArguments()
public static FragSpeaker newInstance(Speaker speaker) {
FragSpeaker fragment = new FragSpeaker();
Bundle data = new Bundle();
data.putSerializable(KEY_SPEAKER, speaker);
fragment.setArguments(data);
return fragment;
}
Saturday, June 15, 13
FROM HERE
• Nested Fragments (with support library revision11) -
fragments inside fragments; child fragments
• DialogFragment
• PreferenceFragment - similar visual style of system preferences
• Headless Fragments; without UI
Saturday, June 15, 13
Slides and source code
https://github.com/canelmas/add2013
Saturday, June 15, 13
THANKYOU!
We are hiring!
ik@pozitron.com
http://www.pozitron.com/career/
can.elmas@pozitron.com
twitter : can_elmas
Saturday, June 15, 13

Contenu connexe

Tendances

android activity
android activityandroid activity
android activity
Deepa Rani
 
Android Support Library
Android Support LibraryAndroid Support Library
Android Support Library
Alexey Ustenko
 

Tendances (20)

Android Fragment
Android FragmentAndroid Fragment
Android Fragment
 
Explanation onAttach() of Fragment class in Android
Explanation onAttach() of Fragment class in AndroidExplanation onAttach() of Fragment class in Android
Explanation onAttach() of Fragment class in Android
 
Introduction to fragments in android
Introduction to fragments in androidIntroduction to fragments in android
Introduction to fragments in android
 
Activities, Fragments, and Events
Activities, Fragments, and EventsActivities, Fragments, and Events
Activities, Fragments, and Events
 
Android basic 4 Navigation Drawer
Android basic 4 Navigation DrawerAndroid basic 4 Navigation Drawer
Android basic 4 Navigation Drawer
 
Android basic 2 UI Design
Android basic 2 UI DesignAndroid basic 2 UI Design
Android basic 2 UI Design
 
Android basic 3 Dialogs
Android basic 3 DialogsAndroid basic 3 Dialogs
Android basic 3 Dialogs
 
Android Components
Android ComponentsAndroid Components
Android Components
 
Android
AndroidAndroid
Android
 
Presentation on Android application life cycle and saved instancestate
Presentation on Android application life cycle and saved instancestatePresentation on Android application life cycle and saved instancestate
Presentation on Android application life cycle and saved instancestate
 
android activity
android activityandroid activity
android activity
 
Android development - Activities, Views & Intents
Android development - Activities, Views & IntentsAndroid development - Activities, Views & Intents
Android development - Activities, Views & Intents
 
STYLISH FLOOR
STYLISH FLOORSTYLISH FLOOR
STYLISH FLOOR
 
Android best practices
Android best practicesAndroid best practices
Android best practices
 
Android UI Fundamentals part 1
Android UI Fundamentals part 1Android UI Fundamentals part 1
Android UI Fundamentals part 1
 
Andriod dev toolbox part 2
Andriod dev toolbox  part 2Andriod dev toolbox  part 2
Andriod dev toolbox part 2
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andev
 
Android Support Library
Android Support LibraryAndroid Support Library
Android Support Library
 
Android in practice
Android in practiceAndroid in practice
Android in practice
 
Android Basic Components
Android Basic ComponentsAndroid Basic Components
Android Basic Components
 

En vedette

Google I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsGoogle I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb Highlights
Romain Guy
 
Fragments notes powerpoint
Fragments notes powerpointFragments notes powerpoint
Fragments notes powerpoint
ktyndall
 
Android Application Component: BroadcastReceiver Tutorial
Android Application Component: BroadcastReceiver TutorialAndroid Application Component: BroadcastReceiver Tutorial
Android Application Component: BroadcastReceiver Tutorial
Ahsanul Karim
 
Android tutorial ppt
Android tutorial pptAndroid tutorial ppt
Android tutorial ppt
Rehna Renu
 
Gaming Technology Presentation
Gaming Technology PresentationGaming Technology Presentation
Gaming Technology Presentation
MrQaz996
 
Video Game Powerpoint
Video Game PowerpointVideo Game Powerpoint
Video Game Powerpoint
Nari07
 

En vedette (19)

Android Fragment-Awesome
Android Fragment-AwesomeAndroid Fragment-Awesome
Android Fragment-Awesome
 
Android 101 - Introduction to Android Development
Android 101 - Introduction to Android DevelopmentAndroid 101 - Introduction to Android Development
Android 101 - Introduction to Android Development
 
Android Fragment Pattern: Communication
Android Fragment Pattern: CommunicationAndroid Fragment Pattern: Communication
Android Fragment Pattern: Communication
 
Fragment debugging
Fragment debuggingFragment debugging
Fragment debugging
 
Spinners, Adapters & Fragment Communication
Spinners, Adapters & Fragment CommunicationSpinners, Adapters & Fragment Communication
Spinners, Adapters & Fragment Communication
 
Google I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsGoogle I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb Highlights
 
Screen orientations in android
Screen orientations in androidScreen orientations in android
Screen orientations in android
 
Android Training (Storing & Shared Preferences)
Android Training (Storing & Shared Preferences)Android Training (Storing & Shared Preferences)
Android Training (Storing & Shared Preferences)
 
Fragments notes powerpoint
Fragments notes powerpointFragments notes powerpoint
Fragments notes powerpoint
 
Intent in android
Intent in androidIntent in android
Intent in android
 
Android Application Component: BroadcastReceiver Tutorial
Android Application Component: BroadcastReceiver TutorialAndroid Application Component: BroadcastReceiver Tutorial
Android Application Component: BroadcastReceiver Tutorial
 
Android presentation
Android presentationAndroid presentation
Android presentation
 
Fragmentation and types of fragmentation in Distributed Database
Fragmentation and types of fragmentation in Distributed DatabaseFragmentation and types of fragmentation in Distributed Database
Fragmentation and types of fragmentation in Distributed Database
 
Android: Intent, Intent Filter, Broadcast Receivers
Android: Intent, Intent Filter, Broadcast ReceiversAndroid: Intent, Intent Filter, Broadcast Receivers
Android: Intent, Intent Filter, Broadcast Receivers
 
Android tutorial ppt
Android tutorial pptAndroid tutorial ppt
Android tutorial ppt
 
Gaming Technology Presentation
Gaming Technology PresentationGaming Technology Presentation
Gaming Technology Presentation
 
The Emerging Virtual Reality Landscape: a Primer
The Emerging Virtual Reality Landscape: a PrimerThe Emerging Virtual Reality Landscape: a Primer
The Emerging Virtual Reality Landscape: a Primer
 
Video Game Powerpoint
Video Game PowerpointVideo Game Powerpoint
Video Game Powerpoint
 
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaAndroid | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
 

Similaire à Android - Working with Fragments

Fragmentation in android
Fragmentation in android Fragmentation in android
Fragmentation in android
Esraa El Ghoul
 
Day 4: Activity lifecycle
Day 4: Activity lifecycleDay 4: Activity lifecycle
Day 4: Activity lifecycle
Ahsanul Karim
 
Bundling Client Side Assets
Bundling Client Side AssetsBundling Client Side Assets
Bundling Client Side Assets
Timothy Oxley
 
mDevCamp - The Best from Google IO
mDevCamp - The Best from Google IOmDevCamp - The Best from Google IO
mDevCamp - The Best from Google IO
ondraz
 

Similaire à Android - Working with Fragments (20)

Lecture #4 activities &amp; fragments
Lecture #4  activities &amp; fragmentsLecture #4  activities &amp; fragments
Lecture #4 activities &amp; fragments
 
Fragmentation in android
Fragmentation in android Fragmentation in android
Fragmentation in android
 
Fragments In Android
Fragments In AndroidFragments In Android
Fragments In Android
 
fragments-activity.pptx
fragments-activity.pptxfragments-activity.pptx
fragments-activity.pptx
 
Android design patterns
Android design patternsAndroid design patterns
Android design patterns
 
Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)
 
Day 4: Activity lifecycle
Day 4: Activity lifecycleDay 4: Activity lifecycle
Day 4: Activity lifecycle
 
04 activities and activity life cycle
04 activities and activity life cycle04 activities and activity life cycle
04 activities and activity life cycle
 
Tk2323 lecture 6 fragment (new)
Tk2323 lecture 6   fragment (new)Tk2323 lecture 6   fragment (new)
Tk2323 lecture 6 fragment (new)
 
Lesson 4
Lesson 4Lesson 4
Lesson 4
 
What the fragments
What the fragmentsWhat the fragments
What the fragments
 
Android Support Library: Using ActionBarCompat
Android Support Library: Using ActionBarCompatAndroid Support Library: Using ActionBarCompat
Android Support Library: Using ActionBarCompat
 
Bundling Client Side Assets
Bundling Client Side AssetsBundling Client Side Assets
Bundling Client Side Assets
 
Multi screenlab
Multi screenlabMulti screenlab
Multi screenlab
 
Mobile application development: part 1: Andriod Vs IOS
Mobile application development: part 1: Andriod Vs IOS Mobile application development: part 1: Andriod Vs IOS
Mobile application development: part 1: Andriod Vs IOS
 
深入淺出談Fragment
深入淺出談Fragment深入淺出談Fragment
深入淺出談Fragment
 
jQuery Mobile Deep Dive
jQuery Mobile Deep DivejQuery Mobile Deep Dive
jQuery Mobile Deep Dive
 
User experience and interactions design
User experience and interactions design User experience and interactions design
User experience and interactions design
 
Reactive Programming with JavaScript
Reactive Programming with JavaScriptReactive Programming with JavaScript
Reactive Programming with JavaScript
 
mDevCamp - The Best from Google IO
mDevCamp - The Best from Google IOmDevCamp - The Best from Google IO
mDevCamp - The Best from Google IO
 

Dernier

Dernier (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Android - Working with Fragments

  • 1. WORKING WITH FRAGMENTS Android Developer Days 2013 Can Elmas Saturday, June 15, 13
  • 2. ABOUT ME • Pozitron, since 2007 • Backend and client side experience • SoftwareTeam Leader at the moment Saturday, June 15, 13
  • 3. AGENDA • Overview • When to Use? • Managing Fragments • Fragment Operations • Demo(s) Saturday, June 15, 13
  • 4. OVERVIEW • Introduced with Honeycomb (API 11) • Modular section of an activity / Part of a user interface* • More dynamic and flexible UI on large screens • Reusability across activities • Supported via Compatibility Package * can also exist without user interface; Headless fragments Saturday, June 15, 13
  • 5. OVERVIEW • Embedded in activities • Lives in aViewGroup inside the activity’s view hierarchy • Its own layout and behavior with its own life-cycle Saturday, June 15, 13
  • 6. WHENTO USE? • Large screens - multi pane, flexible UI • Combined with other UI widgets, ActionBar,ViewPager, NavigationDrawer etc. - beautiful native app! • More flexible, smooth, compact app with less activities; multiple fragments in a single activity Saturday, June 15, 13
  • 8. Use Case - Quora App Action Bar Navigation Saturday, June 15, 13
  • 9. Use Case - Quora AppView Pager swipe Saturday, June 15, 13
  • 10. Use Case -YouTube Navigation Drawer Saturday, June 15, 13
  • 12. onCreate(Bundle) called once the fragment is associated with its activity. Activity is still in the process of being created. Do not depend on activity’s layout onCreateView(LayoutInflater, ViewGroup, Bundle) time to instantiate for the fragment’s user interface (optional, return null for non-graphical fragments) onActivityCreated(Bundle) called once the activity is created and fragment’s view is instantiated. Do final initializations (context dependent instantiations, retrieving views, adding listeners etc.) onDestroyView() Called when the view has been detached from the fragment. Next time the fragment needs to be displayed, a new view will be created. Saturday, June 15, 13
  • 13. MANAGING FRAGMENTS • FragmentManager to interact with fragments inside an Activity • Activity.getFragmentManager() • android.support.v4.app.FragmentActivity.getSupportFragmentMa nager() • FragmentTransaction to perform fragment operations : add, remove, replace, hide at run-time etc. Saturday, June 15, 13
  • 14. ADDING FRAGMENTS - STATIC • <fragment> element in the activity’s layout XML • Preferable if the fragment is consistent in the layout • Limits run-time fragment operations; can’t remove Saturday, June 15, 13
  • 16. TAKE AWAYS • Use Support Library for backward compatibility • android.support.v4.app.FragmentActivity • android.support.v4.app.Fragment • FragmentActivity.getSupportFragmentManager() • Use different layouts to support multiple screen sizes • Static Instantiation limits run time fragment operations Saturday, June 15, 13
  • 17. TAKE AWAYS • Fragment to Fragment communication via callbacks to the Activity; inner type interfaces defined in fragments • Avoid tight coupling between activities and fragments • To access activity from fragment, Fragment.getActivity() • To access fragment from activity • FragmentManager.findFragmentById(int id) • FragmentManager.findFragmentByTag(String tag) Saturday, June 15, 13
  • 18. FRAGMENT OPERATIONS • add - Add a fragment to the activity • remove - Remove an existing fragment; its view is also removed • replace - Remove one fragment from the activity and add another • hide - Hides an existing fragment; its view is hidden • show - Show previously hidden fragment Saturday, June 15, 13
  • 19. FRAGMENTTRANSACTIONS • commit() resolves in the main thread FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.fragment_container, fragment); ft.commit(); Saturday, June 15, 13
  • 20. FRAGMENT BACK STACK • Similar to activity back stack • Allow user to navigate backward • Ability to save fragment transaction onto back stack • Managed by activity on back button press • Activity destroyed once all fragment transactions removed from the back stack and back button is pressed again Saturday, June 15, 13
  • 21. FRAGMENT BACK STACK • FragmentTransaction.addToBackStack(String) • null or optional identifier name for the back stack state • Useful for returning to a given state by calling FragmentManager’s popBackStack methods • popBackStack() : Pop the top state off the back stack • popBackStack(String name, int flags) : pop all states up to the named state.Also pops this state if POP_BACK_STACK_INCLUSIVE flag is set. Saturday, June 15, 13
  • 22. FRAGMENT BACK STACK Fragment A ft.add(R.id.fragment_container, fragmentA); ft.addToBackStack("fragStackA") Fragment A Fragment B1 1. 2. Fragment A Fragment B Fragment C2 ft.add(R.id.fragment_container, fragmentB); 3 ft.add(R.id.fragment_container, fragmentC);3. Saturday, June 15, 13
  • 23. FRAGMENT BACK STACK Fragment A Fragment A Fragment B1 Fragment A Fragment B Fragment C2 3 4. 4 FragmentManager fm = getSupportFragmentManager(); fm.popBackStack("fragStackA", 0); Saturday, June 15, 13
  • 24. FRAGMENT BACK STACK Fragment A Fragment A Fragment B1 Fragment A Fragment B Fragment C2 3 4. 4 FragmentManager fm = getSupportFragmentManager(); fm.popBackStack("fragStackA", POP_BACK_STACK_INCLUSIVE); Saturday, June 15, 13
  • 26. TAKE AWAYS • Depending on your requirements choose one of the paths : • add add add... • replace - navigating back to a removed and back stacked state triggers onCreateView() to be called again • hide/add - might require keep tracking of current fragment to hide • re-draw or re-initialize ? Saturday, June 15, 13
  • 27. TAKE AWAYS • Add fragment transactions to back stack when necessary • Use custom animations for fragment transactions : FragmentTransaction.setCustomAnimations(enter, exit, popEnter, popExit) • ActionBar,ViewPager, MapFragment to provide beautiful, flexible and more native user interfaces Saturday, June 15, 13
  • 28. TAKE AWAYS • ActionBarSherlock (http://actionbarsherlock.com) • extension to support library to provide action bar design across all Android versions • SherlockFragmentActivity • SherlockFragment Saturday, June 15, 13
  • 29. TAKE AWAYS • ViewPager • available with support library • flip left/right through pages of data • SupportMapFragment • google_play_service.jar required • google play services should be installed on device Saturday, June 15, 13
  • 30. TAKE AWAYS • Update action bar state (title, options items etc.) from fragments • "static factory method" to initialize fragments • Pass data to fragments via Fragment.setArguments(Bundle) and Fragments.getArguments() public static FragSpeaker newInstance(Speaker speaker) { FragSpeaker fragment = new FragSpeaker(); Bundle data = new Bundle(); data.putSerializable(KEY_SPEAKER, speaker); fragment.setArguments(data); return fragment; } Saturday, June 15, 13
  • 31. FROM HERE • Nested Fragments (with support library revision11) - fragments inside fragments; child fragments • DialogFragment • PreferenceFragment - similar visual style of system preferences • Headless Fragments; without UI Saturday, June 15, 13
  • 32. Slides and source code https://github.com/canelmas/add2013 Saturday, June 15, 13