public void switchFragment(int targetIndex) {
List<BaseFragment> list = getListFragment();
if (list != null && list.size() > 0) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment targetFragment = list.get(targetIndex);
for (int i = 0; i < list.size(); i++) {
if (i != targetIndex) {
Fragment currentFragment = list.get(i);
//如果fragment已经添加到事物中,则将fragment隐藏掉
if (currentFragment.isAdded()) {
transaction.hide(currentFragment);
}
}
}
//判断fragment是否已经添加到事务中
if (targetFragment.isAdded()) {
//如果该fragment已经添加到事务中,则从事务中取出显示即可,无需销毁再重新创建
transaction.show(targetFragment);
} else {
//如果该fragment没有添加到事务中,则添加新的事务
transaction.add(fragmentLayoutId(), targetFragment);
}
transaction.commit();
}
}
//可以通过重写此方法传进装有fragment的集合
protected List<BaseFragment> getListFragment() {
return new ArrayList<>();
}
//可以通过此方法传进fragment占位显示的fragmentLayout的ID
protected
@IdRes
int fragmentLayoutId() {
return 0;
}
通过一个list集合控制一个activity中所有的fragment显示与隐藏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.