2017-03-06 110 views
0

我目前正在为android的浏览器应用程序工作。我正在管理带有片段的新选项卡。因此,当用户打开新选项卡B时,一切正常,然后再返回到选项卡A.当从A尝试返回到B时出现问题。换句话说,当您尝试弹回相同片段时,它不工作第二次。第二次从backstack获取片段

这是我如何增加新tabs-片段

android.app.Fragment f1 = new FragmentHolder(); 
    allFragments.add(f1); 
    getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, f1).addToBackStack(fragmentTags[allFragments.size()-1]).commit(); 

,在这里,我怎么回弹出的片段

boolean chkFlag = getFragmentManager().popBackStackImmediate(currentTag.getFragmentTAG(),0); 

我感谢您提前帮助。

回答

1

使用下面的活动功能,

private void loadFragmentAnimated(Fragment fragment, Bundle args, int containerId, String title) 
    { 
     fragment.setArguments(args); 
     FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(containerId, fragment); 
     fragmentTransaction.commitAllowingStateLoss(); 
    } 

加入片段使用,

loadFragmentAnimated(c, null, R.id.container_name, "title"); 

,并删除片段使用,

getSupportFragmentManager().beginTransaction().remove(getSupportFragmentManager().findFragmentById(R.id.container_name)).commit(); 
+0

谢谢你的建议,但我将如何跟踪没有标签的后台堆栈中的所有碎片? – Alexander

+0

你可以通过容器id跟踪片段 –

+0

做这个[post](http://stackoverflow.com/questions/6374170/how-to-set-a-fragment-tag-by-code) –