Android Fragment boilerplate code

A dummy fragment layout xml
[code language=”xml”]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".FragmentA">

<TextView
style="@style/fragmentTextView"
android:text="Fragment A" />

</RelativeLayout>
[/code]

A dummy Fragment class does nothing but printing the methods names for those methods that’s going to be executed during the lifecyle of a Fragment.
[code language=”java”]
public class FragmentA extends Fragment {
private static final String TAG = "FragmentA";

@Override
public void onAttach(Context context) {
// This is called once the fragment is associated with its activity.
super.onAttach(context);
Log.i(TAG, " onAttach()");
}

@Override
public void onCreate(Bundle savedInstanceState) {
// This is called after the onAttach(), doing the initial creation of the fragment.
super.onCreate(savedInstanceState);
Log.i(TAG, " onCreate()");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//This is called after the onCreate(), this is where you will initialize all the views in this fragment.
Log.i(TAG, " onCreateView()");
View view = inflater.inflate(R.layout.fragment_a, container, false);
return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
//This is called after onCreateView(), this is where you can access the resource from the activity of this fragment.
super.onActivityCreated(savedInstanceState);
Log.i(TAG, " onActivityCreated()");
}

@Override
public void onStart() {
//This is called after onActivityCreated(), it makes the fragment visible to the user (based on its containing activity being started).
super.onStart();
Log.i(TAG, " onStart()");
}

@Override
public void onResume() {
//This is called after onStart()
super.onResume();
Log.i(TAG, " onResume()");
}

@Override
public void onPause() {
//This is called when the fragment is being moved out from the screen
super.onPause();
Log.i(TAG, " onPause()");
}

@Override
public void onStop() {
//This is called when the fragment is no longer visible to the user either because its activity is being stopped or a fragment operation is modifying it in the activity.
super.onStop();
Log.i(TAG, " onStop.");
}

@Override
public void onDestroyView() {
//This is where you will clean up resources of this fragment, background thread, handlers, etc.
super.onDestroyView();
Log.i(TAG, " onDestroyView.");
onDestroy();

}

@Override
public void onDestroy() {
//This is called to do final cleanup of the fragment’s state.
super.onDestroy();
Log.i(TAG, " onDestroy.");
}

@Override
public void onDetach() {
//This is called immediately prior to the fragment no longer being associated with its activity.
super.onDetach();
Log.i(TAG, " onDetach()");
}

@Override
public void onViewStateRestored(Bundle savedInstanceState) {
//This is called after onActivityCreated(), this is where you will retrieve the data that’s stored from the onSaveInstanceState
super.onViewStateRestored(savedInstanceState);
String greeting = (savedInstanceState != null) ? savedInstanceState.getString("greeting") : "null";
Log.i(TAG, " onViewStateRestored: " + greeting);
}

@Override
public void onSaveInstanceState(Bundle outState) {
//This is called after onPause(), this is where you will store the data that you want to keep when the uer come back to this fragment
super.onSaveInstanceState(outState);
Log.i(TAG, " onSaveInstanceState.");
outState.putString("greeting", "Hello");
}
}
[/code]

To include this fragment in an activity and assign a fragment tag to it.
[code language=”java”]
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//Initialize and include the FragmentA in this activity
FragmentA fragmentA = new FragmentA();
fragTag = "fragment_a";
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_place, fragmentA, fragTag)
.addToBackStack(null)
.commit();
}
[/code]
The activity_main.xml for the above activity and fragment.
[code language=”xml”]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fragment_place"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</RelativeLayout>
[/code]

To retrieve the fragment by tag in the activity class, the tag name is fragment_a for the fragment created above.
[code language=”java”]
getFragmentManager().findFragmentByTag("fragment_a");
[/code]

To include fragments in a layout file directly. Assume this is the layout file for an activity, and it is passed to the setContentView in the activity’s onCreate method. In this layout file, there are two fragments, the name attribute of the fragment tag has to be the class path of the fragment. In this case, they are com.example.android.fragments.HeadlinesFragment and com.example.android.fragments.ArticleFragment. Reference
[code language=”xml”]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<fragment android:name="com.example.android.fragments.HeadlinesFragment"
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />

<fragment android:name="com.example.android.fragments.ArticleFragment"
android:id="@+id/article_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />

</LinearLayout>
[/code]

Search within Codexpedia

Custom Search

Search the entire web

Custom Search