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

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

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

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()内部,每个东西都可以在log cat中正常工作,但是没有视图可见,甚至没有出现任何异常,我希望书籍详细信息片段到由部分细节片段替换。

书籍详细信息片段的Xml具有id book_description_fragment,而用于部分描述片段的xml具有id section_description_fragment。

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


人到中年有点甜
浏览 555回答 3
3回答

吃鸡游戏

以XML格式编码的片段无法替换。如果你需要用另一个片段替换片段,你应该首先动态添加它们。注意:R.id.fragment_container是您将片段带到的活动中所选择的布局或容器。// Create new fragment and transactionFragment 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 neededtransaction.replace(R.id.fragment_container, newFragment);transaction.addToBackStack(null);// Commit the transactiontransaction.commit();

LEATH

我已经用完美的方法来管理片段 替换和生命周期。它只用一个新片段替换当前片段,如果它不相同并且它不在backstack中(在这种情况下它将弹出它)。它包含几个选项,就好像您希望将片段保存在backstack中一样。=> 见这里的要点使用此活动和单个活动,您可能希望将其添加到您的活动中:@Overridepublic void onBackPressed() {     int fragments = getSupportFragmentManager().getBackStackEntryCount();     if (fragments == 1) {             finish();             return;     }     super.onBackPressed();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
Android