package com.badoo.chateau.example.ui; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import com.badoo.barf.mvp.MvpPresenter; import com.badoo.chateau.example.R; import java.util.ArrayList; import java.util.Collection; public class BaseActivity extends AppCompatActivity { private final Collection<MvpPresenter> mPresenters = new ArrayList<>(); @Nullable private BackPressedListener mBackPressedListener; @Override public void setContentView(@LayoutRes int layoutResID) { super.setContentView(layoutResID); Toolbar toolbar = getToolbar(); if (toolbar != null) { setSupportActionBar(toolbar); } } @Override public void setTitle(CharSequence title) { if (getSupportActionBar() != null) { getSupportActionBar().setTitle(title); } else { super.setTitle(title); } } @Override public void setTitle(int titleId) { if (getSupportActionBar() != null) { getSupportActionBar().setTitle(titleId); } else { super.setTitle(titleId); } } /** * Register a presenter to ensure it's lifecycle methods are called.¬ */ public void registerPresenter(@NonNull MvpPresenter presenter) { mPresenters.add(presenter); } public void registerBackPressedListener(@NonNull BackPressedListener listener) { mBackPressedListener = listener; } @Override protected void onStart() { super.onStart(); for (MvpPresenter presenter : mPresenters) { presenter.onStart(); } } @Override protected void onStop() { super.onStop(); for (MvpPresenter presenter : mPresenters) { presenter.onStop(); } } @Override public void onBackPressed() { if (mBackPressedListener == null || !mBackPressedListener.onBackPressed()) { super.onBackPressed(); } } protected Toolbar getToolbar() { return (Toolbar) findViewById(R.id.toolbar_actionbar); } public interface BackPressedListener { boolean onBackPressed(); } }