【发布时间】:2017-04-01 06:41:11
【问题描述】:
我正在尝试以一种非常简单的方式管理片段。我创建了一个实用程序类,它向后台堆栈添加片段,当我们按下后退按钮时,前一个片段会显示出来。我同意。但是,当我试图清除所有片段并显示根片段时,我无法正确执行此操作。以下是我的实用程序类:
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);
}
}
当我想要另一个片段时,我只需在 animatedReplace 方法中为 addToStack 传递“true”。当我想清除后台堆栈时,我传递“false”并调用 clearBackStackToHome 方法。谁能帮我解决我做错了什么?
【问题讨论】:
标签: android android-fragments fragment-backstack