替换父片段根布局的子片段

我有一个5个片段的viewpager,其中一个我想通过按钮点击完全替换它。 我也希望能够通过后退按钮隐藏子片段。 这里的片段布局:

    

当我尝试像这样替换contacts_layout

 ImportContactsFragment importContactsFragment = new ImportContactsFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.addToBackStack(null); transaction.replace(R.id.contacts_layout, importContactsFragment).commit(); 

它不起作用(我的意思是没有错误,但我的ImportContactsFragment根本没有显示)。 但是,当我尝试替换import_contacts视图时,如下所示:

 ImportContactsFragment importContactsFragment = new ImportContactsFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.addToBackStack(null); transaction.replace(R.id.import_contacts, importContactsFragment).commit(); 

一切正常,显示了ImportContactsFragment。

所以我想知道是否可以用子片段替换所有片段内容? 也许我可以用其他方式做到这一点?

replace事务不会从目标布局容器中删除当前视图,因此当您使用第一个代码时,新的Fragment将添加到contacts_layout LinearLayout但不会被视为先前的视图覆盖整个屏幕(高度) 。

使用第二段代码,您添加新FragmentLinearLayout是父LinearLayout的第一个子节点,它有空格,因此它是可见的。

对于你正在做的事情,我建议你将初始布局包装在一个置于包装器布局中的Fragment类中,然后你可以很容易地替换它。