package me.devsaki.hentoid.abstracts; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import org.greenrobot.eventbus.EventBus; import me.devsaki.hentoid.HentoidApp; import me.devsaki.hentoid.database.HentoidDB; import me.devsaki.hentoid.events.DownloadEvent; /** * Created by avluis on 04/10/2016. * Basic Fragment Abstract Class * Implementations receive an onBackPressed handled by the hosting activity. */ public abstract class BaseFragment extends Fragment { private static HentoidDB db; private BackInterface backInterface; protected static HentoidDB getDB() { return db; } public abstract boolean onBackPressed(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Context cxt = HentoidApp.getAppContext(); db = HentoidDB.getInstance(cxt); if (!(getActivity() instanceof BackInterface)) { throw new ClassCastException( "Hosting activity must implement BackInterface."); } else { backInterface = (BackInterface) getActivity(); } } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (!EventBus.getDefault().isRegistered(this)) { EventBus.getDefault().register(this); } } @Override public void onStart() { super.onStart(); backInterface.addBackInterface(this); } @Override public void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); } // Implementations must annotate method with: // @Subscribe(threadMode = ThreadMode.MAIN) @SuppressWarnings("unused") public abstract void onDownloadEvent(DownloadEvent event); public interface BackInterface { void addBackInterface(BaseFragment fragment); } }