public abstract class BaseFragment<V extends BaseView, T extends BasePresenter<V>>
extends RxFragment implements BaseView
private View parentView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
parentView = getLayoutInflater(savedInstanceState).inflate(getLayoutId(), null, false);
ButterKnife.bind(this, parentView);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return parentView;
}
public View getParentView() {
return parentView;
}
关于MVP方面的步骤与Activity一样, 这里只说明代码上, 使用BaseFragment与Android自带Fragment的区别.
/**
* 指定Fragment需加载的布局ID
*/
protected abstract int getLayoutId();
/**
* 初始化方法, 类似OnCreate, 仅在此方法中做初始化操作, findView与事件绑定请使用ButterKnife
*/
protected abstract void init(Bundle savedInstanceState);
/**
* 创建Presenter, 然后通过调用{@link #getPresenter()}来使用生成的Presenter
*/
protected abstract T createPresenter();
与BaseActivity一样. 只需要实现上述三个方法, 而无需实现onCreate, onCreateView, onViewCreated等. 如下:
public class TestFragment extends BaseFragment {
@Override
protected int getLayoutId() {
return R.layout.fragment_test;
}
@Override
protected void init(Bundle savedInstanceState) {
}
@Override
protected BasePresenter createPresenter() {
return null;
}
}