将一个片段替换为活动组内的另一个片段

2022-08-31 07:49:32

我在小组活动中有一个片段,我想用另一个片段替换它:

FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
SectionDescriptionFragment bdf = new SectionDescriptionFragment();
ft.replace(R.id.book_description_fragment, bdf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();

当它作为一个单独的项目在不使用活动组的情况下完成时,它工作正常,在日志猫中,每件事都工作正常,因为控件进入getview(),但是没有视图是可见的,甚至没有出现任何异常,我希望书籍详细信息片段被部分细节片段所取代。

书籍详细信息片段的 xml 具有 id book_description_fragment,而章节描述片段的 xml 具有 id section_description_fragment。

上面的代码是在一个项目的onClick方法中,我希望当用户在水平滚动视图中点击一个项目时,片段会发生变化。


答案 1

在 XML 中硬编码的片段无法替换。如果您需要用另一个片段替换一个片段,首先应该动态添加它们。

注意:R.id.fragment_container是您在将片段引入的活动中选择的布局或容器。

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack if needed
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();

答案 2

请参阅此问题

您只能替换“动态添加的片段”。

因此,如果要添加动态片段,请参阅此示例


推荐