我试图以一种非常简单的方式管理片段。我创建了一个实用工具类,它将碎片添加到后台堆栈中,当我们按下后退按钮时,前一个片段就出现了。我对此表示满意。但是,当我试图清除所有碎片,并显示根片段时,我无法正确地做到这一点。以下是我的工具类:如何管理堆栈中的碎片?
public class FragmentUtil {
private FragmentUtil() {
}
public static void animatedReplace(FragmentActivity activity, int containerId, Fragment fragment, Bundle args, boolean addToBackStack){
FragmentTransaction transaction=activity.getSupportFragmentManager().beginTransaction();
fragment.setArguments(args);
if(addToBackStack){
transaction.addToBackStack(fragment.getClass().getName());
}
transaction.setCustomAnimations(R.anim.slide_from_right, R.anim.slide_to_left,R.anim.slide_from_left,R.anim.slide_to_right);
transaction.replace(containerId,fragment);
transaction.commit();
}
public static void clearBackStackToHome(FragmentActivity activity){
FragmentManager manager = activity.getSupportFragmentManager();
manager.popBackStack(DashboardFragment.class.getName(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
当我想以另一个片段,我传递“真”为addToStack在animatedReplace方法。当我想清除后台时,我传递“false”并调用clearBackStackToHome方法。任何人都可以帮助我,我做错了什么?
嗨rafsanahmad007!该解决方案工作得很好。但是,如何在onBackPressed()上实现它? –
@HiteshPamnani我编辑了答案.. – rafsanahmad007
每当用户点击后退按钮时都会发生。我想在某个过程之后才会发生。例如,在完成付款过程后,用户可以点击返回按钮并导航到根片段。 –