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顯示與隱藏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.