Android封装BaseFragment
16lz
2021-01-26
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"?>
效果图
更多相关文章
- Android使用Notification通知栏功能的封装
- Okhttp封装
- 关于Android(安卓)studio安装出现“ 'tools.jar' seems to be no
- Android(安卓)圆形和圆角图片 AppCompatImageView封装
- sqlite与android交互 (封装)
- Android(安卓)仿淘宝订单状态tab(可以滑动、带红点badge)
- Android黑群出品:对pull进行封装,可直接解析xml
- Android(安卓)开发技巧 - Android(安卓)6.0 以上权限大坑和权限
- C#+Hybrid App(Android)实现微信APP支付