Fragment:
1) Fragment is a piece of activity(sub-activity), which has its own lifecycle depends on the lifecycle of Activity.
2) Fragments were introduced in Android Honeycomb(API 11) version
3) An Activity can have any number of fragments
4) Each fragment has its own lifecycle
5) Each fragment has its own java class and xml file
6) It can process its own events
Advantages of Fragments:
1) A fragment can be reused across multiple activities
2) Add/remove/replace of a fragment can be done at anytime while the activity is running
3) Make better use of large screen space in Tablets
4) It is possible to display fixed/swipe tabs only using fragments
5) It is highly recommended to using Navigation drawer using only fragments
Fragment Lifecycle:
Life of a fragment goes through the following 3 stages.
1) Creation
2) Running
3) Shut down/being destroyed
Creation:
onAttach: Called once the fragment is associated with its activity
onCreate: Called to do initial creation of Fragment
onCreateView: Called when it is time for the fragment to draw its user interface. In this method, we will attach XML file to Fragment.
onActivityCreated: Called to tell the fragment that its activity has completed its own Activity.onCreate(). Activity and Fragment instance has been created as well as the view hierarchy
Running:
onStart: Called when the fragment is about to be visisble
onResume: Called when the fragment is started interacting with user
Shutdown/being destroyed:
onPause: Called as the first indication that the user is leaving the fragment
onStop: Called when fragment is no longer visible to the user followed by onPause
onDestroyView: Called when the Fragment View hierarchy is about to be destroyed. After this, you can no more access Fragment’s View hierarchy
onDestroy: Called when the fragment’s instance is about to be destroyed
onDetach: Called when the fragment is untied to activity
Steps to create a Fragment:
1) Create an XML file
2) Create a subclass of android.support.v4.app.Fragment class
3) Attach the XML to Fragment class by overriding
onCreateView method of Fragment
Ex:
public class DemoFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_demo, container, false);
return view;
}
}
Note: Here LayoutInflater is a class, whose responsibility is to take an XML file and provide us a View object by inflating.
Attcah a fragment to Activity:
Fragment can be attached to Activity in 2 ways.
1) Static attach
2) Dynamic attach while activity is running
Static attach: For this, we will use a tag called <fragment> in Activity XML, we will provide height, width, name and id in that tag as attributes.
Ex:
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:gravity=”center”
android:orientation=”vertical”>
<fragment
android:id=”@+id/demo_fragment”
android:name=”nareshit.com.fragments.DemoFragment”
android:layout_width=”match_parent”
android:layout_height=”300dp” />
</LinearLayout>
Processing events in Fragment:
public class DemoFragment extends Fragment {
private EditText etName;
private Button button;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_demo, container, false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
etName = (EditText) view.findViewById(R.id.editText);
button = (Button) view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = etName.getText().toString();
Toast.makeText(getActivity(), name, Toast.LENGTH_SHORT).show();
}
});
}
}
Homework:
1) Create an Android application to design registration form in Fragment
2) Create an Android application to describe life cycle of Activity and Fragment
3) Create an Android application which describes different types of Dialogs
1) AlertDialog
2) DatePickerDialog
3) TimePickerDialog
4) Progress Dialog