我試圖以一種非常簡單的方式管理片段。我創建了一個實用工具類,它將碎片添加到後臺堆棧中,當我們按下後退按鈕時,前一個片段就出現了。我對此表示滿意。但是,當我試圖清除所有碎片,並顯示根片段時,我無法正確地做到這一點。以下是我的工具類:如何管理堆棧中的碎片?
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
每當用戶點擊後退按鈕時都會發生。我想在某個過程之後纔會發生。例如,在完成付款過程後,用戶可以點擊返回按鈕並導航到根片段。 –