title: Android封装BaseFragment
date: 2017-11-27 16:15:08
tags: Fragment
categories: Android


Android封装BaseFragment

上一篇文章,我们封装了BaseActivity,这篇文章我们打算封装一个BaseFragment,它的功能和BaseActivity类似,都是要将一些公共的功能抽象出来,将公共的UI封装起来。

  • 抽象出公共方法,增强代码复用的逻辑
  • 统一管理ActionBar
  • 统一管理Toast,Log,Dialog

同时我们在已经封装好的BaseFragment的基础上还可以封装出BaseListFragment,这个Fragment可以用做订单列表的展示,这种页面。

上代码:

BaseFragment.javapublic class BaseFragment extends Fragment implements        android.view.View.OnClickListener, BaseFragmentInterface {    protected LayoutInflater mInflater;    protected ViewGroup mActionBar;    private String mActionBarTitle;    Unbinder unbinder;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        LinearLayout layout = new LinearLayout(getActivity());        View view;        layout.setOrientation(LinearLayout.VERTICAL);        if (hasBackButton()) {            mActionBar = (ViewGroup) LayoutInflater.from(getActivity()).inflate(R.layout.action_bar_layout, null);            TextView tv = (TextView) mActionBar.findViewById(R.id.action_bar_title);            tv.setText(getActionBarTitle());            mActionBar.findViewById(R.id.action_bar_back).setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    Log.e("lin", "---lin--->  111111111111111111111111");                }            });            layout.addView(mActionBar);        }        view = LayoutInflater.from(getActivity()).inflate(getLayoutId(), null);        layout.addView(view);        unbinder = ButterKnife.bind(this, view);        initData();        initView(layout);        return layout;    }    private boolean hasBackButton() {        return false;    }    @Override    public void onResume() {        super.onResume();    }    @Override    public void onPause() {        super.onPause();    }    @Override    public void onDestroy() {        super.onDestroy();    }    protected int getLayoutId() {        return 0;    }    protected View inflateView(int resId) {        return this.mInflater.inflate(resId, null);    }    public boolean onBackPressed() {        return false;    }    protected void showWaitDialog() {        FragmentActivity activity = getActivity();        if (activity instanceof DialogControl) {            ((DialogControl) activity).showWaitDialog();        }    }    protected void hideWaitDialog() {        FragmentActivity activity = getActivity();        if (activity instanceof DialogControl) {            ((DialogControl) activity).hideWaitDialog();        }    }    protected String getActionBarTitle() {        return mActionBarTitle;    }    @Override    public void onClick(View v) {    }    @Override    public void initView(View view) {    }    @Override    public void initData() {    }}
BaseFragmentInterface.javapublic interface BaseFragmentInterface {    public void initView(View view);    public void initData();}
BaseListFragment.javapublic class BaseListFragment extends BaseFragment {    @BindView(R.id.tv_hint_no_order)    public TextView tvHintNoOrder;    @BindView(R.id.rc_base_fr)    public RecyclerView rcBaseFr;    @BindView(R.id.smart_refresh_base_fr)    public SmartRefreshLayout smartRefreshBaseFr;    Unbinder unbinder;    @Override    protected int getLayoutId() {        return R.layout.fragment_pull_refresh_recycler_view;    }    @Override    public void initView(View view) {        super.initView(view);    }}
fragment_pull_refresh_recycler_view.xml<?xml version="1.0" encoding="utf-8"?>                                            
效果图

更多相关文章

  1. Android使用Notification通知栏功能的封装
  2. Okhttp封装
  3. 关于Android(安卓)studio安装出现“ 'tools.jar' seems to be no
  4. Android(安卓)圆形和圆角图片 AppCompatImageView封装
  5. sqlite与android交互 (封装)
  6. Android(安卓)仿淘宝订单状态tab(可以滑动、带红点badge)
  7. Android黑群出品:对pull进行封装,可直接解析xml
  8. Android(安卓)开发技巧 - Android(安卓)6.0 以上权限大坑和权限
  9. C#+Hybrid App(Android)实现微信APP支付

随机推荐

  1. Android(安卓)5.0+ 高级动画开发系列 矢
  2. [置顶] Android点击Button实现功能的几种
  3. Android 禁止横竖屏切换
  4. Android子控件超出父控件方法
  5. android 邮件乱码问题
  6. Android(安卓)截图实现(2)
  7. 2014年 Android 学习计划
  8. 安装 Mono for Android Visual Studio 20
  9. 安装Android 时 SDK AVD MANAGER时更新报
  10. [Android]Awind.inc系列android软件破解