Android架构之BaseFragment
来源:互联网 发布:网络平台搭建公司 编辑:程序博客网 时间:2024/05/16 01:23
在开发APP时,我们经常会写一个Fragment的基类,提取共同的逻辑,包括:点击事件、toast、activity跳转、fragment切换、fragment栈的管理、其他根据APP需要添加的逻辑。
public abstract class BaseFragment extends Fragment implements View.OnClickListener { public AppCompatActivity myActivity; public boolean haseLogined = false; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); myActivity = (AppCompatActivity) getActivity(); haseLogined = haseLogined(); } public boolean haseLogined() { if (!InitUtils.getSP(getContext()).getString(Constant.USERINFO_KEY, "").equals("")) { return true; } else { return false; } } public void startAppcompatActivity(Class<?> cls, boolean hasLogined) { if (hasLogined) { startActivity(new Intent(getContext(), cls)); } else { showToast("请先登录"); } } public LoginBean.ListBean getLoginListBean() { if (haseLogined) { return JSON.parseObject(InitUtils.getSP(getContext()).getString(Constant.USERINFO_KEY, ""), LoginBean.ListBean.class); } return null; } public String getUid() { if (haseLogined()) { LoginBean.ListBean listBean = JSON.parseObject( InitUtils.getSP(getContext()).getString(Constant.USERINFO_KEY, ""), LoginBean.ListBean.class); return listBean.getId(); } return ""; } public String getAvatar() { if (haseLogined()) { LoginBean.ListBean listBean = JSON.parseObject( InitUtils.getSP(getContext()).getString(Constant.USERINFO_KEY, ""), LoginBean.ListBean.class); return listBean.getAvatar(); } return ""; } public String getPhone() { if (haseLogined()) { LoginBean.ListBean listBean =getLoginListBean(); return listBean.getPhone(); } return ""; } public String getName() { if (haseLogined()) { LoginBean.ListBean listBean =getLoginListBean(); return listBean.getName(); } return ""; } public void setAvatarBitmapFromLocal(ImageView iv_head) { Bitmap bitmap = BitmapFactory.decodeFile(getAvatar()); if (bitmap != null) { iv_head.setImageBitmap(bitmap); } } public void initData() { } public void loadMoreHaveHandle(Handler handler, TextView tv_result_footer, int size) { tv_result_footer.setVisibility(View.VISIBLE); tv_result_footer.setText("有" + size + "条更多"); handler.sendEmptyMessageDelayed(Constant.WHAT_FOOT_GONE, 2000); } public void startAppcompatActivity(Class<?> cls) { startActivity(new Intent(getContext(), cls)); } public void startMSGActivity() { if (!InitUtils.getSP(getContext()).getString(Constant.USERINFO_KEY, "").equals("")) { startActivity(new Intent(getContext(), MSGActivity.class)); } else { showToast("请先登录"); } } /* */ public void replaceFragment(int framelayout_id, Fragment fragment) { FragmentManager fragmentManager = getChildFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(framelayout_id, fragment).commitAllowingStateLoss(); } /* */ // public void addFragment(int framelayout_id, Fragment fragment) {// FragmentManager fragmentManager = getChildFragmentManager();// FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();// fragmentTransaction.add(framelayout_id, fragment).addToBackStack(null).commit();// } public void popupFragment() { if (myActivity.getSupportFragmentManager().getBackStackEntryCount() == 0) { finishActivity(); return; } myActivity.getSupportFragmentManager().popBackStack(); } public void startFragment(int framelayout_id, Fragment fragment) { FragmentTransaction fragmentTransaction = myActivity.getSupportFragmentManager().beginTransaction(); fragmentTransaction.setCustomAnimations(R.anim.right_in, R.anim.left_out, R.anim.left_in, R.anim.right_out); fragmentTransaction.replace(framelayout_id, fragment).addToBackStack(null).commit(); } public void finishActivity() { myActivity.finish(); } public void showToast(String msg) { Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show(); } public void showToast(int string_id) { Toast.makeText(getContext(), getContext().getResources().getString(string_id), Toast.LENGTH_SHORT).show(); } public Fragment createFragment(int position) { return null; }}
参考:Android架构
阅读全文
0 0
- Android架构之BaseFragment
- android 之 Baseactivity 和BaseFragment
- android BaseFragment 工具类
- android 抽取BaseFragment
- android 控件 fragment baseFragment
- BaseFragment
- BaseFragment
- 【BaseFragment】基于MVP+Dagger2+Retrofit+Rxjava框架之BaseFragment
- Android 项目(详解一)之—— 基础类BaseActivity/BaseFragment/总的Application
- 搭建一个简单、易用的 Android 项目框架之BaseFragment(二)
- Android探索之旅(第二十八篇)BaseActivity,BaseFragment封装必要点
- android常用封装 --- BaseFragment
- android BaseFragment获取Context上下文方法
- Android BaseActivity、BaseFragment等 常用方法封装
- android BaseActivity与BaseFragment的封装
- android常用封装 --- BaseFragment
- 封装之路(四) BaseFragment BaseViewModel BaseModel
- Android谈谈封装那些事--BaseActivity和BaseFragment(一)
- [VS]VS2017 安装ReportDesigner/ReportViewer的方法
- Linux 虚拟机的安装与软件安装
- lightoj 1071
- 蓝桥杯--错误票据
- Android 中GreenDao3.0简单使用
- Android架构之BaseFragment
- Eclipse安装SVN插件的三种方法
- mysql 添加用户和数据库
- SQL Server不允许更改字段属性
- JS和安卓互相调用以及Scheme协议完成外部链接跳转app指定页面
- 【计算机动画】路径控制(二)
- 160个练手CrackMe-012
- 全栈开发者都应该关注这些
- 基于i.MX6UL实现PWM脉冲计数