The specified child already has a parent. You must call removeView() on the child's parent first,
程序员文章站
2024-01-17 19:42:52
...
关于ViewPager+Fragment 滑动时 报java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child’s parent first,
private class ContentFragmentViewPagerAdapter extends FragmentPagerAdapter {
public ContentFragmentViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public SubBaseFragment getItem(int position) {
return mFragments.get(position);
}
}
public abstract class SubBaseFragment extends Fragment {
private View mRootView;
public SubBaseFragment() {
super();
}
// 初始化数据
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mRootView = initView();
ButterKnife.inject(this, mRootView);
}
// 加载Fragment布局的方法
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
container.addView(mRootView);
return mRootView;
}
// 加载显示数据的方法,类似于Activity中的onCreate
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
initData();
super.onActivityCreated(savedInstanceState);
}
public abstract View initView();
protected abstract void initData();
}
解决方法一:
mContentContainer.setOffscreenPageLimit(6); <!-- 这里的数字必须大于Fragment的个数 -->
上一篇: The specified child already has a parent. You must call removeView() on the child's parent first
下一篇: The specified child already has a parent. You must call removeView() on the child's parent first.
推荐阅读
-
The specified child already has a parent. You must call removeView() on the child‘s parent first.
-
The specified child already has a parent. You must call removeView() on the child's parent first.
-
The specified child already has a parent. You must call removeView() on the child's parent first,
-
The specified child already has a parent. You must call removeView() on the child's parent first