«

android之Fragment的嵌套布局

时间:2024-3-2 18:50     作者:韩俊     分类: Android


在3.0后的版本,android推出了fragment,极大的增强了布局的灵活性。有时候可能项目需求需要在一个FrameLayout中嵌套另一个FrameLayout。


先来分析红色Fragment中嵌套绿色Fragment,android中在继承fragment的类中多了几个方法,其中一个是getChildFragmentManager() 当然也有getParentFragment()得到父fragment的引用。

红色框依托于activity

    FragmentManager manager = getFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(R.id.fragment_main, mainFragment);
        transaction.commit();
绿色框依托于父fragment

    FragmentTransaction transaction = getChildFragmentManager()
                .beginTransaction();
        transaction.replace(R.id.content, mMyFragment);
        transaction.commit();

再看上面图上的这个需求,一开始我想着是直接按照一般的replace方式,但是报了一个错误


06-09 19:07:26.420: E/FragmentManager(27274): No view found for id 0x7f0a0002 (com.sheepm.copyxiami:id/fragment_main)

在网上找了类似的错误,发现是因为点击的fragment中并没有id为fragment_main的,因为在红色框里面,而点击事件在绿色框里,

然后尝试了使用getParentFragment()依然失败了,后来发现在activity中替换是可以的,于是改了一下就可以了


    FragmentTransaction transaction = getActivity().getFragmentManager()
                .beginTransaction();
        transaction.replace(R.id.fragment_main, fragment);
        transaction.addToBackStack(null);
        transaction.commit();





标签: android

热门推荐