Skip to content

Instantly share code, notes, and snippets.

@libinbensin
Forked from JakeWharton/ContractFragment.java
Created March 14, 2014 19:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save libinbensin/9555224 to your computer and use it in GitHub Desktop.
Save libinbensin/9555224 to your computer and use it in GitHub Desktop.
/* Base fragment to ensure the parent activity implements a contract interface. */
public abstract class ContractFragment<T> extends Fragment {
private T mContract;
@Override
public void onAttach(Activity activity) {
try {
mContract = (T)activity;
} catch (ClassCastException e) {
throw new IllegalStateException(activity.getClass().getSimpleName()
+ " does not implement " + getClass().getSimpleName() + "'s contract interface.", e);
}
super.onAttach(activity);
}
@Override
public void onDetach() {
super.onDetach();
mContract = null;
}
public final T getContract() {
return mContract;
}
}
/* Example fragment showing usage of ContractFragment. */
public class MyCoolFragment extends ContractFragment<MyCoolFragment.Contract> {
public interface Contract {
void sayHi(String message);
}
public void somethingHappened() {
getContract().sayHi("Hi, Mom!");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment