当我使用withBackPressed片段时,我正在尝试解决问题:
如果以这种方式添加片段:
public void showFragment(Fragment new_fragment,String tag,boolean back){
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag(tag);
fragment = fragment==null?new_fragment:fragment;
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
if(back)transaction.addToBackStack(tag);
transaction.commit();
}
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack();
}else {
moveTaskToBack(true);
}
}
当我使用popBackStack
时,片段会重叠。为什么呢?
如何正确删除或避免存储我不需要的backstack片段(例如SplashScreenFragment)?
谢谢!
答案 0 :(得分:1)
你的showFragment()函数有一个参数(boolean back),可以将它从堆栈中排除。
您还可以使用弹出给定标识符(http://developer.android.com/reference/android/app/FragmentManager.html)的其他popBackStack()方法签名之一
或者您可以使用NavUtils和清单定义来定义关系。