package com.cheikh.lazywaimai.base; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import com.cheikh.lazywaimai.context.AppContext; import com.cheikh.lazywaimai.controller.MainController; import com.cheikh.lazywaimai.model.bean.ResponseError; import com.cheikh.lazywaimai.ui.Display; import com.cheikh.lazywaimai.util.ActivityStack; /** * author: cheikh.wang on 17/1/5 * email: wanghonghi@126.com */ public abstract class CoreActivity<UC> extends AppCompatActivity implements BaseController.Ui<UC> { private MainController mMainController; private Display mDisplay; private UC mCallbacks; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutId()); mDisplay = new Display(this); mMainController = AppContext.getContext().getMainController(); getController().attachUi(this); ActivityStack.create().add(this); } @Override protected void onResume() { super.onResume(); mMainController.init(); mMainController.attachDisplay(mDisplay); getController().startUi(this); } @Override protected void onPause() { super.onPause(); mMainController.suspend(); mMainController.detachDisplay(mDisplay); } @Override public void onDestroy() { super.onDestroy(); getController().detachUi(this); ActivityStack.create().remove(this); AppContext.getContext().getRefWatcher().watch(this); } protected abstract int getLayoutId(); protected abstract BaseController getController(); @Override public void setCallbacks(UC callbacks) { mCallbacks = callbacks; } @Override public UC getCallbacks() { return mCallbacks; } @Override public void onResponseError(ResponseError error) {} public final Display getDisplay() { return mDisplay; } protected final MainController getMainController() { return mMainController; } @Override public void onBackPressed() { getMainController().onBackButtonPressed(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: getMainController().onBackButtonPressed(); return true; } return super.onOptionsItemSelected(item); } }