package com.cheng.mvpframestudy.themvp.frame.presenter; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import com.cheng.mvpframestudy.themvp.frame.view.IDelegate; /** * Presenter base class for Activity * Presenter层的实现基类 * * @param <T> View delegate class type * @author kymjs (http://www.kymjs.com/) on 10/23/15. */ public abstract class ActivityPresenter<T extends IDelegate> extends AppCompatActivity { protected T viewDelegate; public ActivityPresenter() { try { viewDelegate = getDelegateClass().newInstance(); } catch (InstantiationException e) { throw new RuntimeException("create IDelegate error"); } catch (IllegalAccessException e) { throw new RuntimeException("create IDelegate error"); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); viewDelegate.create(getLayoutInflater(), null, savedInstanceState); setContentView(viewDelegate.getRootView()); initToolbar(); viewDelegate.initWidget(); bindEventListener(); } protected void bindEventListener() { } protected void initToolbar() { Toolbar toolbar = viewDelegate.getToolbar(); if (toolbar != null) { setSupportActionBar(toolbar); } } @Override public boolean onCreateOptionsMenu(Menu menu) { if (viewDelegate.getOptionsMenuId() != 0) { getMenuInflater().inflate(viewDelegate.getOptionsMenuId(), menu); } return super.onCreateOptionsMenu(menu); } @Override protected void onDestroy() { super.onDestroy(); viewDelegate = null; } protected abstract Class<T> getDelegateClass(); }