标签:一点 空白 limit 决定 字符 为我 int 很多 产生
转载:http://blog.csdn.net/bingospunky/article/details/51352400
两层Fragment在某些情况下,内层Fragment会显示空白,这是一个比较常见的问题,以前我也有一些解法,这次又遇到了这个问题,索性看了一下Fragment相关的源码,找到了问题的根源。
如果你想看一下什么样的代码会出现Fragment出现空白,这个demo会告诉你。
之前写过一篇文章两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容,是两层Fragment,外层使用replace切换,内层是ViewPager切换,内层的Fragment在某些情况下会不显示。现在来看这和两层ViewPager是一个原因的。
解法有很多,这里先写两种可行的解法,下面章节会解释产生空白Fragment的根本原因,当你知其所以然的时候,就可以有n种解法了。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(rootView == null){
rootView = inflater.inflate(R.layout.fragment3, null);
// 初始化View,添加Fragment
// ...
}
return rootView;
}
产生空白的根本原因是往ViewGroup里添加子View失败。
要解释明白这个过程首先需要明确几个概念,不知道各位看官是否明确,我先在这里列出来:
下面我们做如下约定:一个Activity通过一个ViewPager包含4个Fragment,分别命名为mFragment1,mFragment2,mFragment3,mFragment4,其中mFragment3通过ViewPager包含3个Fragment,分别命名为mFragment31,mFragment32,mFragment33。
归根结底看是由于一些Fragment相关的原因导致往ViewGroup里添加子View失败。至于解法就可以有很多了,比较而言,我觉得前文提到的两种解法是比较好的,如果内存不紧张的情况下推荐用解法1;内存比较紧张的情况下,建议采用解法2
标签:一点 空白 limit 决定 字符 为我 int 很多 产生
原文地址:http://www.cnblogs.com/98k98k/p/7953668.html