package com.hitherejoe.androidboilerplate.ui.activity; import android.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import com.hitherejoe.androidboilerplate.AndroidBoilerplateApplication; import com.hitherejoe.androidboilerplate.injection.component.ActivityComponent; import com.hitherejoe.androidboilerplate.injection.component.ApplicationComponent; import com.hitherejoe.androidboilerplate.injection.component.DaggerActivityComponent; import com.hitherejoe.androidboilerplate.injection.module.ActivityModule; public class BaseActivity extends AppCompatActivity { private ActivityComponent mActivityComponent; public ActivityComponent activityComponent() { if (mActivityComponent == null) { mActivityComponent = DaggerActivityComponent.builder() .activityModule(new ActivityModule(this)) .applicationComponent(AndroidBoilerplateApplication.get(this).getComponent()) .build(); } return mActivityComponent; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: FragmentManager fm = getFragmentManager(); if (fm.getBackStackEntryCount() > 0) { fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } else { finish(); } return true; default: return super.onOptionsItemSelected(item); } } protected ApplicationComponent applicationComponent() { return AndroidBoilerplateApplication.get(this).getComponent(); } }