Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming with Android: Android Fragments Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.

Similar presentations


Presentation on theme: "Programming with Android: Android Fragments Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna."— Presentation transcript:

1 Programming with Android: Android Fragments Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna

2 Luca Bedogni, Marco Di Felice – Android for Tablets 2 Outline Android for Tablets: Fragments Transactions Android for Tablets: Fragments Lifecycle Android for Tablets: Fragments Layout Android for Tablets: Fragments Creation Android for Tablets: Fragments Design Philosophy Android for Tablets: A Case Study Android for Tablets: Fragments Back State

3 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 3 Android: Application Case Study Option1 Option2 LIST of Wireless Networks Detected Statistics Net0 -123dbm channel 2 WEP Net1 -93dbm channel 1 NONE Net2 -93dbm channel 2 WPA Channel0 CHn Option Panel Sub- Activity Sub- Activity

4 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 4 Android: Fragments Fragment  A portion of the user interface in an Activity. Practically, a Fragment is a modular section of an Activity. DESIGN PHILOSOPHY  Structure an Activity as a collection of Fragments.  Reuse a Fragment on different Activities … Introduced from Android 3.0 (API Level 11)

5 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 5 Android: Fragments Design Philosophy EXAMPLE: Using Fragments with Smartphone layout

6 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 6 Android: Fragments Design Philosophy EXAMPLE: Using Fragments with Tablet layout

7 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 7 Android: Fragment Transactions EXAMPLE: Using Fragments on Different Devices (Smartphone/Tab)

8 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 8 Android: Adding a Fragment to the UI Specify layout properties for the Fragment as it were a View. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <fragment android:name="it.cs.android30.FragmentOne" android:id="@+id/f1" android:layout_width="wrap_content" android:layout_height="fill_parent" /> <fragment android:name="it.cs.android30.FragmentTwo" android:id="@+id/f2" android:layout_width="wrap_content" android:layout_height="fill_parent" />

9 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 9 Android: Fragment Creation To define a new Fragment  create a subclass of Fragment. public class MyFragment extends Fragment { …}  Has its own lifecycle (partially connected with the Activity lifecyle)  Has its own layout (or may have)  Can receive its own input events  Can be added or removed while the Activity is running. PROPERTY of a Fragment:

10 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 10 Android: Fragment Lifecycle Several callback methods to handle various stages of a Fragment lifecycle: onCreate()  called when creating the Fragment. onCreateView()  called when it is time for the Fragment to draw the user interface the first time.

11 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 11 Android: Fragment Lifecycle onAttach() onCreate() onCreateView() onActivityCreated() onStart() onResume() onPause() onStop() onDestroyView() onDestroy() onDetach() CALLED when FRAGMENT is CREATED CALLED when FRAGMENT is DESTROYED

12 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 12 Android: Fragment Creation onCreateView()  must return the View associated to the UI of the Fragment (if any) … public class ExampleFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) { return inflater.inflate(R.layout.example_fragment, container, false); }

13 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 13 Android: Fragment Lifecycle The lifecycle of the Activity in which the Fragment lives directly affects the lifecycle of the Fragment. onPause (Activity)  onPause (Fragment) onStart (Activity)  onStart (Fragment) onDestroy (Activity)  onDestroy (Fragment) Fragments have also extra lifecycle callbacks to enable runtime creation/destroy.

14 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 14 Android: Fragment Lifecycle ACTIVITY]: onCreate() --- beforeSetContentView [FRAGMENT]: onAttach() [FRAGMENT]: onCreate() [FRAGMENT]: onCreateView() [ACTIVITY]: onCreate() --- after SetContentView [FRAGMENT]: onActivityCreated() [ACTIVITY]: onStart() [FRAGMENT]: onStart() [ACTIVITY]: onResume() [FRAGMENT]: onResume() [FRAGMENT]: onPause() [ACTIVITY]: onPause() [FRAGMENT]: onStop() [ACTIVITY]: onStop() [FRAGMENT]: onDestroyView() [FRAGMENT]: onDestroy() [FRAGMENT]: onDetach() [ACTIVITY]: onDestroy()

15 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 15 Android: Managing Fragments A Fragment can get a reference to the Activity … Activity getActivity() An Activity can get a reference to the Fragment … ExampleFragment fragment=(ExampleFragment) getFragmentManager(). findFragmentById (R.id.example_f ragment) The FragmentManager manages the Fragment associated to the current Activity.

16 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 16 Android: Managing Fragments In some cases, a Fragment must share an event with the Activity … how to do it? 1.Define a callback interface inside the Fragment 1.Require that the host Activity implements it public interface OnArticleSelectedListener { public void onArticleSelected(Uri uri); … }

17 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 17 Android: Fragment Transactions  Fragments can be added/removed/replaced while the Activity is running …  Each set of changes to the Activity is called a Transaction.  Transaction can be saved in order to allow a user to navigate backward among Fragments when he clicks on the “Back” button.

18 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 18 Android: Fragment Transactions FragmentManager man=getFragmentManager(); FragmentTransaction transaction=man.beginTransaction(); FragmentExample newFragment=new FragmentExample(); transaction.replace(R.id.fragment_container, newFragment); transaction.addToBackState(null); transaction.commit(); 1. ACQUIRE an instance of the FRAGMENT MANAGER 2. CREATE new Fragment and Transaction 3. SAVE to backStack and COMMIT

19 Luca Bedogni, Marco Di Felice – Android for Tablets (c) Luca Bedogni 2012 19 Android: Fragment Transactions  A Transaction is not performed till the commit …  If addToBackStack() is not invoked  the Fragment is destroyed and it is not possible to navigate back.  If addToBackStack() is invoked  the Fragment is stopped and it is possible to resume it when the user navigates back.  popBackStack()  simulate a Back from the user.


Download ppt "Programming with Android: Android Fragments Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna."

Similar presentations


Ads by Google