Fragment跳转Fragment以及闭坑指南、方法isadded()
Fragment被添加到Activity之前,如果去调用了Fragment的某些函数就会导致这个异常出现。在当前依赖的Activity中重写该方法。
·
一、Fragment跳转同一个Activity另一个Fragment
requireActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fl_inspection_fl, fragment, null)
.addToBackStack(null)
.commit();
addToBackStack(null)是压栈跳转,保证会退到上一个Fragment
二、如果需要返回到上一个Fragment
getSupportFragmentManager().popBackStack();
或者getFragmentManager().popBackStack();
基本上:requireActivity().getSupportFragmentManager().popBackStack();
三、如果需要获取Fragment的onActivityResult
/**
* 1.使用getSupportFragmentManager().getFragments()获取到当前Activity中添加的Fragment集合
* 2.遍历Fragment集合,手动调用在当前Activity中的Fragment中的onActivityResult()方法。
*/
getSupportFragmentManager().getFragments();
if (getSupportFragmentManager().getFragments().size() > 0) {
List<Fragment> fragments = getSupportFragmentManager().getFragments();
for (Fragment mFragment : fragments) {
mFragment.onActivityResult(requestCode, resultCode, data);
}
}
在当前依赖的Activity中重写该方法
四、报错java.lang.IllegalStateException:Fragment XXXFragment{409864b0} not attached to Activity
原因:
Fragment被添加到Activity之前,如果去调用了Fragment的某些函数就会导致这个异常出现。
在出现问题的地方加入Fragment是否添加到Activity的判断:
if (this.isAdded()) {
Log.e("this.isAdded()2", String.valueOf(this.isAdded()));
}
还会继续补充
更多推荐
所有评论(0)