Android的BaseFragment封装

举报
程思扬 发表于 2022/01/13 22:07:55 2022/01/13
【摘要】 不久前文章写了 BaseActivity的博客 今天顺便把BaseFragment的封装也写一下。 Base的封装可以让你更加了解Java面向对象的特征(如继承、多态、泛型、注解等等)的同时解决重复性编码问题。废话不多说,直接上代码。 /** * @author:程龙 date; On 2018/8/22 */public abst...

不久前文章写了 BaseActivity的博客 今天顺便把BaseFragment的封装也写一下。

Base的封装可以让你更加了解Java面向对象的特征(如继承、多态、泛型、注解等等)的同时解决重复性编码问题。废话不多说,直接上代码。


  
  1. /**
  2. * @author:程龙 date; On 2018/8/22
  3. */
  4. public abstract class BaseFragment extends Fragment {
  5. private View mContentView;
  6. private Context mContext;
  7. @Nullable
  8. @Override
  9. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  10. mContentView = inflater.inflate(setLayoutResourceID(), container, false);
  11. ButterKnife.bind(this, mContentView);
  12. mContext = getContext();
  13. init();
  14. setUpView();
  15. setUpData();
  16. return mContentView;
  17. }
  18. /**
  19. * 此方法用于返回Fragment设置ContentView的布局文件资源ID * * @return 布局文件资源ID
  20. */
  21. protected abstract int setLayoutResourceID();
  22. /**
  23. * 一些View的相关操作
  24. */
  25. protected abstract void setUpView();
  26. /**
  27. * 一些Data的相关操作
  28. */
  29. protected abstract void setUpData();
  30. /**
  31. * 此方法用于初始化成员变量及获取Intent传递过来的数据 * 注意:这个方法中不能调用所有的View,因为View还没有被初始化,要使用View在initView方法中调用
  32. */
  33. protected void init() {
  34. }
  35. public View getContentView() {
  36. return mContentView;
  37. }
  38. public Context getMContext() {
  39. return mContext;
  40. }
  41. }

除了上面的简单封装,还可以根据实际项目中使用的第三方来封装需要的一些初始化或者其他操作,例如友盟、推送、百度等。


  
  1. @Override public void onResume() {
  2. super.onResume();
  3. StatService.onPause(this);
  4. //此处是百度 ...//其他一些
  5. }
  6. @Override public void onPause() {
  7. super.onPause();
  8. StatService.onResume(this);
  9. //此处是百度 ...//其他一些
  10. }
  11. @Override public void onDestroy() {
  12. DetoryViewAndThing();
  13. //其他一些
  14. }

除此之外还可以封装一些Fragment、Activity之间传参问题,如下:


  
  1. /**
  2. *
  3. 发送消息,用于各个组件之间通信
  4. *
  5. *@param event 消息事件对象
  6. */
  7. public final <EVENT extends BaseEvent> void sendMessage(@NonNull EVENT event) {
  8. // 发布事件 EventBus.getDefault().post(event);
  9. }

大家可以根据自己的十几需求进行更改,有什么问题可以在下方评论。

 

文章来源: chengsy.blog.csdn.net,作者:程思扬,版权归原作者所有,如需转载,请联系作者。

原文链接:chengsy.blog.csdn.net/article/details/81944165

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。