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();
}