切换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()
本文介绍了一种解决从Activity返回后Fragment切换不生效的方法。通过将transaction.commit()替换为transaction.commitAllowingStateLoss()来确保Fragment切换可以正常工作。
1849

被折叠的 条评论
为什么被折叠?



