Android Fragments - 如果已经存在,则从后台堆栈中删除片段

时间:2016-04-10 20:35:20

标签: android android-fragments fragment-backstack

我有一些片段将被以下方法取代。我认为我的代码出了问题,因为我想防止将一个片段多次添加到后台堆栈中。如果我点击片段B两次,所有实例都将被添加到后面的堆栈,按下后退按钮将通过两个创建的实例。

public void replaceFragment(Fragment fragment, boolean addToBackStack, boolean customAnimation) {
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    String tag = fragment.getClass().getSimpleName();
    if (customAnimation) {
        transaction.setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_bottom, R.anim.slide_in_bottom, R.anim.slide_out_bottom);
    }
    transaction.replace(R.id.fragment_container, fragment, tag);

    // remove from back stack if exists
    // always return false!
    boolean f = manager.popBackStackImmediate(tag, 0);

    if (addToBackStack) {
        transaction.addToBackStack(tag);
    }
    transaction.commit();
}

0 个答案:

没有答案