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架构

原创粉丝点击