4

我使用fragmentTransaction通过片段来进行,它看起来像这样:跳过片段(添加/隐藏)

 FragmentManager fm = oldFragment.getFragmentManager(); 
     FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
     fragmentTransaction.add(oldFragment.getId(), newFragment, tag); 
     fragmentTransaction.hide(oldFragment); 
     fragmentTransaction.addToBackStack(tag); 
     fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
     fragmentTransaction.commit(); 

有几个片段我想回去时跳过其中的一些。

实施例:

Frag1 - >(按Next) - > Frag2 - >(按Next) - > Frag3 - >(按返回) - > Frag1

此解决方案时我用取代代替添加和隐藏

getFragmentManager().popBackStack(
    tag, 
    FragmentManager.POP_BACK_STACK_INCLUSIVE); 

Reference` Skip some fragments onBackPressed

但在我的情况下,跳过的片段显示了一小会儿。我怎样才能让它好像它们之间的碎片从来没有?

+0

我不知道我是否理解正确,但您是否尝试使用fragmentTransaction.remove(FRAGMENT_YOU_NEED); 并做了两次 –

+0

仍然有动画问题 – Belzebub

+0

好,但片段被删除?它只是动画? –

回答

0

我用这个函数去除碎片告诉我,如果我帮助。

public static void removeFragment(FragmentActivity activity) { 
    try { 
     FragmentManager supportFragmentManager = activity.getSupportFragmentManager(); // getFragmentManager(); 
     FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); 
     fragmentTransaction.setCustomAnimations(R.anim.slide_down, R.anim.slide_up); 
     fragmentTransaction.remove(supportFragmentManager.getFragments().get(0)); 

     try { 
      fragmentTransaction.commit(); 

     } catch (Exception e) { 
     } 
     supportFragmentManager.popBackStack(); 

    } catch (NullPointerException exception) { 
     exception.printStackTrace(); 
    } 
} 
+0

没有getFragments()方法。 (min api是19,我没有使用支持) – Belzebub

+0

你可以将它替换为supportFragmentManager.findFragmentByTag(“TAG”)吗?检查这是否有效 –