切换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()