不久前文章写了 BaseActivity的博客 今天顺便把BaseFragment的封装也写一下。
Base的封装可以让你更加了解Java面向对象的特征(如继承、多态、泛型、注解等等)的同时解决重复性编码问题。废话不多说,直接上代码。
/** * @author:程龙 date; On 2018/8/22 */ public abstract class BaseFragment extends Fragment { private View mContentView; private Context mContext; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { mContentView = inflater.inflate(setLayoutResourceID(), container, false); ButterKnife.bind(this, mContentView); mContext = getContext(); init(); setUpView(); setUpData(); return mContentView; } /** * 此方法用于返回Fragment设置ContentView的布局文件资源ID * * @return 布局文件资源ID */ protected abstract int setLayoutResourceID(); /** * 一些View的相关操作 */ protected abstract void setUpView(); /** * 一些Data的相关操作 */ protected abstract void setUpData(); /** * 此方法用于初始化成员变量及获取Intent传递过来的数据 * 注意:这个方法中不能调用所有的View,因为View还没有被初始化,要使用View在initView方法中调用 */ protected void init() { } public View getContentView() { return mContentView; } public Context getMContext() { return mContext; } }
除了上面的简单封装,还可以根据实际项目中使用的第三方来封装需要的一些初始化或者其他操作,例如友盟、推送、百度等。
1. @Override public void onResume() { super.onResume(); StatService.onPause(this); //此处是百度 ...//其他一些 } @Override public void onPause() { super.onPause(); StatService.onResume(this); //此处是百度 ...//其他一些 } @Override public void onDestroy() { DetoryViewAndThing(); //其他一些 }
除此之外还可以封装一些Fragment、Activity之间传参问题,如下:
1. /** * 发送消息,用于各个组件之间通信 * *@param event 消息事件对象 */ public final <EVENT extends BaseEvent> void sendMessage(@NonNull EVENT event) { // 发布事件 EventBus.getDefault().post(event); }
大家可以根据自己的十几需求进行更改,有什么问题可以在下方评论。