Download - Multi screenlab
![Page 1: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/1.jpg)
![Page 2: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/2.jpg)
![Page 3: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/3.jpg)
But in tablet...
![Page 4: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/4.jpg)
Do I really need to write everything twice?
![Page 5: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/5.jpg)
NO!
![Page 6: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/6.jpg)
Fragments
● “Part of the screen”● Introduced in Android 3.0 (API 11).● Available for older Android platforms via
support package / library. ● Allows us to change activity appearance at
runtime without complex changes.
![Page 7: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/7.jpg)
Fragments philosophy
![Page 8: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/8.jpg)
Creating a fragment
● Extend Fragment class.● Implement fragment Callbacks.
![Page 9: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/9.jpg)
Fragment life cycle
![Page 10: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/10.jpg)
Fragment Callbacks
● OnCreate()– Called when first creating the fragment.
– Initialize members here.
● OnCreateView()– Called when the fragments needs to be displayed
on screen.
– Must return a view object.
![Page 11: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/11.jpg)
Fragment Callbacks
● OnPause()– Called when the user leaves the fragment
● OnDestroy– Called when fragment is destroyed.
![Page 12: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/12.jpg)
OnCreateView example
![Page 13: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/13.jpg)
Adding fragment to activity / layout
![Page 14: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/14.jpg)
Adding fragment to activity
● Activity should extends fragmentActivity instead of Activity
![Page 15: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/15.jpg)
Communicating with the activity
● Fragment side:– GetActivity() - returns a reference to the containing
activity.
● Activity Side:
![Page 16: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/16.jpg)
Communicating with activity
● Often a fragment needs to share events with its activity. – For example: itemClicked.
● Fragment should define a callback interface
![Page 17: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/17.jpg)
Communicating with activity - cont
● Activity should implement that callback interface.
● Fragment holds reference to that listener and notifies it when needed.
![Page 18: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/18.jpg)
Checkpoint 0
● Checkout checkpoint0 branch from
https://github.com/RanNachmany/AndconLab● Adjust project to use actionBarSherlock● Run.
![Page 19: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/19.jpg)
Checkpoint 1
● Create a fragment that displays a list of all lectures.
● Change MainActivity to use the new fragment.● Do the same for SingleLectureActivity. ● Don't forget to implement callback interface.
![Page 20: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/20.jpg)
Supporting tablets
● How activity A will change its layout from one fragment to two dynamically?
● The answer: xml qualifiers. – We will create two xml layouts. One for phone, and
one for tablet.
– OS will choose the right layout during runtime.
– Good qualifier: sw-600. Smallest width: 600. ● Located at res/layout-sw600dp
![Page 21: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/21.jpg)
![Page 22: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/22.jpg)
Changing fragments programatically
![Page 23: Multi screenlab](https://reader033.vdocuments.net/reader033/viewer/2022060109/55583cebd8b42acb078b4cb9/html5/thumbnails/23.jpg)
Checkpoint 2
● Add main_activity layout under sw-600 qualifier.
● Adjust MainActivity code. ● Test on phone and tablet. ● Bring world peace.