我在这里用
public void replaceFragment(Fragment fragment, boolean isMainPage, Bundle bundle) {
String backStateName = fragment.getClass().getName();
FragmentManager manager = getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
if (bundle != null) {
fragment.setArguments(bundle);
}
System.out.println("isMainPage :: " + isMainPage);
System.out.println("FRAGMENT NAME :: " + backStateName + " fragmentPopped :: " + fragmentPopped);
if (!fragmentPopped) { //fragment not in back stack, create it.
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.main_fragment, fragment);
if (isMainPage) {
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
System.out.println("backStackCount :: " + backStackCount);
transaction.addToBackStack(backStateName);
transaction.commit();
}
}
用于替换整个项目中的片段。我的问题是,当我从最后一个片段弹出时,它显示空白页面,在该页面上放置了我的框架布局以替换片段
<FrameLayout
android:id="@+id/main_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
只需从代码中删除此行,即可解决您的问题。
transaction.addToBackStack(backStateName);
说明
您将片段添加到堆栈中,以便首先返回片段,该片段从后堆栈弹出,并且可以看到空容器。
注意:如果你想给标签名称为您的片段,然后只需更换你的这行代码transaction.replace(R.id.main_fragment, fragment);
与此transaction.replace(R.id.main_fragment, fragment, backStateName);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句