I am pretty confused about SingleFragmentActivity and CrimeActivity


So in the first part of the chapter, we learn how to move to an Activity from a Fragment, which is pretty straightforward. But I do not understand how we get a CrimeFragment when we transit to CrimeActivity (I know this question is a bit old for the chapter but still not too late).

So, this part of CrimeListFragment is the source of the transition which I have no issues with:
public void onClick(View view) {
Intent intent = new Intent(getActivity(), CrimeActivity.class);

and CrimeActivity looks something like this:
import android.support.v4.app.Fragment;

public class CrimeActivity extends SingleFragmentActivity {

protected Fragment createFragment() {
return new CrimeFragment();

And the SingleFragmentActivity abstract class looks like this:
public abstract class SingleFragmentActivity extends AppCompatActivity {

protected abstract Fragment createFragment();

protected void onCreate(@Nullable Bundle savedInstanceState) {

FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragment_container);

if(fragment == null){
fragment = createFragment();

So, here are my quesitons. In CrimeActivity why do we only Override this method called “createFragment()” which only returns a new Fragment. Why dont we have a function “onCreate()”? I am not an expert in Java but I would be more than grateful if someone could explain the transition process and the use of abstract class. Thanks a lot!


If I’ve understood, an abstract class is abstract : we can’t instantiate this class. This kind of class give methods and properties to his children, and the class which inherit from abstracts classes can be instantiated. An abstract class is like a pattern or a template for classes which inherit from them.

But Fragment and Activity, I’m not easy with that, and I prefer no answer.