嵌套fragment碰到的那些bug 总结

在一个fragment中嵌套更多个fragment并不是想象的那么顺利,很多坑!!


bug1:嵌套的适配器使用的FragmentPagerAdapter,一开始再次切入时,死活无法重载Fragment getItem(int position)方法,导致显示空白页面,


最终查询资料,发现是适配器构造方法的问题:

MyFragmentPagerAdapter(FragmentManager fm),这里构造方法需要的是

this.getChildFragmentManager(),而不是getSupportFragmentManager(),因为他是内部嵌套的子fragment,不能复用父类的管理器!


bug2:java.lang.IllegalStateException: No activity

at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1091)


这个问题原因有点复杂,总之方案就是在当前父级的Fragment中,加入代码:

@Override
	public void onDetach() {
		super.onDetach();
		try {
			Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
			childFragmentManager.setAccessible(true);
			childFragmentManager.set(this, null);
		} catch (NoSuchFieldException e) {
			throw new RuntimeException(e);
		} catch (IllegalAccessException e) {
			throw new RuntimeException(e);
		}

	}



你可能感兴趣的:(嵌套,Fragment,getitem)