package io.github.droidkaigi.confsched.fragment; import android.app.Activity; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import io.github.droidkaigi.confsched.activity.BaseActivity; import io.github.droidkaigi.confsched.di.FragmentComponent; import io.github.droidkaigi.confsched.di.FragmentModule; public abstract class BaseFragment extends Fragment { private FragmentComponent fragmentComponent; @NonNull public FragmentComponent getComponent() { if (fragmentComponent != null) { return fragmentComponent; } Activity activity = getActivity(); if (!(activity instanceof BaseActivity)) { throw new IllegalStateException( "The activity of this fragment is not an instance of BaseActivity"); } fragmentComponent = ((BaseActivity) activity).getComponent() .plus(new FragmentModule(this)); return fragmentComponent; } }