package org.wikipedia.activity; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.annotation.LayoutRes; import android.support.v4.app.Fragment; import org.wikipedia.R; /** * Boilerplate for a {@link android.support.v4.app.FragmentActivity} containing a single stack of * Fragments. */ public abstract class SingleFragmentActivity<T extends Fragment> extends ThemedActionBarActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayout()); if (!isFragmentCreated()) { addFragment(createFragment()); } } protected void addFragment(T fragment) { getSupportFragmentManager().beginTransaction().add(getContainerId(), fragment).commit(); } protected abstract T createFragment(); /** @return The Fragment added to the stack. */ protected T getFragment() { //noinspection unchecked return (T) getSupportFragmentManager().findFragmentById(getContainerId()); } /** @return The resource layout to inflate which must contain a {@link android.view.ViewGroup} * whose ID is {@link #getContainerId()}. */ @LayoutRes protected int getLayout() { return R.layout.activity_single_fragment; } /** @return The resource identifier for the Fragment container. */ @IdRes protected int getContainerId() { return R.id.fragment_container; } protected boolean isFragmentCreated() { return getFragment() != null; } }