Fragment中嵌套Fragment,多次显示隐藏父Fragment之后子Fragment不显示
2017-08-18 11:49
363 查看
转载注明出处:http://blog.csdn.net/Zou_pl/article/details/77367975 项目中遇到一个问题,就是一个Fragment中嵌套Fragment,多次显示隐藏父Fragment之后子Fragment不显示。具体的表现是在父Fragment A中嵌套添加了一个子Fragment B。外部调用父Fragment A第一次显示时,FragmentA、B都正常显示;外部第二次调用父Fragment显示时,Fragment A正常显示,Fragment B显示空白。 解决方法如下: 首先来看两个Fragment之间的关系:
public class AFragment extends Fragment{ private static final String TAG = AFragment.class.getSimpleName(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(TAG,"AFragment , onCreateView() !"); if (mVRoot==null) { mVRoot = inflater.inflate(R.layout.fragment_a, container, false); } initView(); return mVRoot; } private void initView() { addBFragment(); } ... }
就是在Fragment A的onCreateView中就添加Fragment B,重点是如何添加Fragment B,原本的方法是:
private void addBFragment() { FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); bFragment = new BFragment(); fragmentTransaction.add(R.id.b_container, bFragment , "b"); fragmentTransaction.addToBackStack("b"); fragmentTransaction.commitAllowingStateLoss(); }
这样写,**第一次显示正常,第二次显示就无法显示Fragment B.原因是嵌套的Fragment 不能使用getFragmentManager(),必须使用getChildFragmentManager()**。正确的写法为:
private void addBFragment() { FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); bFragment = new BFragment(); fragmentTransaction.add(R.id.b_container, bFragment , "b"); fragmentTransaction.addToBackStack("b"); fragmentTransaction.commitAllowingStateLoss(); }
相关文章推荐
- fragment嵌套fragment,切换后,子fragment内容不显示的问题
- fragment中嵌套viewpager,vierpager中有多个fragment,不显示 .
- 两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容
- Fragment中ViewaPager嵌套Fragment,内部Fragment无法显示
- fragment中嵌套viewpager,vierpager中有多个fragment不显示
- fragment嵌套viewpager嵌套 关于不能正常显示问题
- 程序启动时隐藏状态栏,进入应用程序之后显示状态栏
- 控件显示之后,点击其他位置隐藏的实现
- Fragment的隐藏与显示
- ViewPager中的Fragment嵌套ViewPager滑动不正常显示问题
- 两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容
- Fragment嵌套 子fragment获取父fragment控件
- fragment嵌套viewpager嵌套fragment第二次加载数据不显示问题
- 解决swiper在标签页里面 先隐藏后显示 之后 的一系列问题
- Fragment中显示隐藏Activity中的view
- Fragment隐藏与显示
- ConstraintLayout fragment activity 嵌套的时候,ConstraintLayout 不能作为activity的根节点,否则fragment显示不出来
- 关于viewPager嵌套viewPager,切换上层fragment内层fragment不显示的问题
- 一起Talk Android吧(第五十四回:Android中的Fragment显示与隐藏一)
- fragment 显示隐藏