切換fragment顯示很簡單,其實就是add、show或者hide之類的,但是從activity返回後使用 transaction.commit() 並沒有達到有效的效果。
這裏是原始的切換代碼:
/**
* 顯示碎片
*/
private void showFragment() {
FragmentTransaction transaction = fragmentManager.beginTransaction();
//如果之前沒有添加過
if (!fragments.get(currentIndex).isAdded()) {
transaction
.hide(currentFragment)
.add(R.id.fl_content, fragments.get(currentIndex), "" + currentIndex); //第三個參數爲添加當前的fragment時綁定一個tag
} else {
transaction
.hide(currentFragment)
.show(fragments.get(currentIndex));
}
currentFragment = fragments.get(currentIndex);
//這個方法普通使用的話沒有問題,但是從界面返回執行的話就沒有效果
transaction.commit();
}
應該把 transaction.commit() 換成如下代碼:
transaction.commitAllowingStateLoss()