Fragment使用封装

xiaoxiao2021-02-28  31

封装类

public class FragmentManagerHelper { // 管理类FragmentManager private FragmentManager mFragmentManager; // 容器布局id containerViewId private int mContainerViewId; /** * 构造函数 * @param fragmentManager 管理类FragmentManager * @param containerViewId 容器布局id containerViewId */ public FragmentManagerHelper(@Nullable FragmentManager fragmentManager, @IdRes int containerViewId) { this.mFragmentManager = fragmentManager; this.mContainerViewId = containerViewId; } /** * 添加Fragment */ public void add(Fragment fragment){ // 开启事物 FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); // 第一个参数是Fragment的容器id,需要添加的Fragment fragmentTransaction.add(mContainerViewId, fragment); // 一定要commit fragmentTransaction.commit(); } /** * 切换显示Fragment */ public void switchFragment(Fragment fragment){ // 开启事物 FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); // 1.先隐藏当前所有的Fragment List<Fragment> childFragments = mFragmentManager.getFragments(); for (Fragment childFragment : childFragments) { fragmentTransaction.hide(childFragment); } // 2.如果容器里面没有我们就添加,否则显示 if(!childFragments.contains(fragment)){ fragmentTransaction.add(mContainerViewId,fragment); }else{ fragmentTransaction.show(fragment); } // 替换Fragment // fragmentTransaction.replace(R.id.main_tab_fl,mHomeFragment); // 一定要commit fragmentTransaction.commit(); } } 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556

简单使用

mFragmentHelper = new FragmentManagerHelper(getSupportFragmentManager(), R.id.main_tab_fl); mHomeFragment = new HomeFragment(); mFragmentHelper.add(mHomeFragment); @OnClick(R.id.home_rb) private void homeRbClick() { if (mHomeFragment == null) { mHomeFragment = new HomeFragment(); } mFragmentHelper.switchFragment(mHomeFragment); } @OnClick(R.id.find_rb) private void findRbClick() { if (mFindFragment == null) { mFindFragment = new FindFragment(); } mFragmentHelper.switchFragment(mFindFragment); } @OnClick(R.id.new_rb) private void newRbClick() { if (mNewFragment == null) { mNewFragment = new NewFragment(); } mFragmentHelper.switchFragment(mNewFragment); } @OnClick(R.id.message_rb) private void messageRbClick() { if (mMessageFragment == null) { mMessageFragment = new MessageFragment(); } mFragmentHelper.switchFragment(mMessageFragment); }
转载请注明原文地址: https://www.6miu.com/read-2630716.html

最新回复(0)