我有一个奇怪的问题。我想从当前的片段中打开新的片段。 所以我这样做:
Fragment fragment = new teamSettings();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.teamDetailAdmin, fragment);
// add to backstack, then back button will be work with fragments!
ft.addToBackStack(null);
// add animation
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
问题是,在我的新片段中,我看到了我在之前的片段中点击过的那些按钮。
任何人都可以解释,为什么会这样?
答案 0 :(得分:1)
调用FragmentTransition replace(R.id.container,fragment)
的工作方式与调用给定容器的每个片段的remove
和新片段的add
相同。如果您之前的片段未被删除(Button仍显示),那是因为您为R.id.teamDetailAdmin
以外的容器添加了该片段。要成功替换片段,如果它们位于不同的容器中,则需要从其容器中删除当前片段,并将新片段添加到所需的容器中。
答案 1 :(得分:1)
Try this way,
Please take framelayout in your current activity
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Fragment fragment = new teamSettings();
getFragmentManager().beginTransaction().replace(R.id.container, fragment,
fragment.getTag()).commit();