AnZ*_*Zya 3 android overlapping android-fragments fragment-backstack
问题是正确管理后台堆栈,以便先前(或删除)前一个片段.问题在于它们的重叠......
程序结构如下:
CatalogFragment,NewsFragment,BlogFragment;CatalogFragment的项目点击我需要更换这个CatalogFragment用LessonsFragment,这是名单也.ps项目是俄语,但我认为你可以理解

这是添加(动态)这些片段的方式:
@Override
public void onNavigationDrawerItemSelected(int position) {
FragmentManager fragmentManager = getSupportFragmentManager();
// fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); //this also doesn't work
switch (position+1) {
case 1:
//getSupportFragmentManager().popBackStack(); // this doesnt work
fragmentManager.beginTransaction().replace(R.id.container,
CatalogFragment.newInstance(position + 1)).addToBackStack("catalog").commit();
break;
case 2:
fragmentManager.beginTransaction().replace(R.id.container,
NewsFragment.newInstance(position + 1)).addToBackStack("news").commit();
break;
case 3:
fragmentManager.beginTransaction().replace(R.id.container,
BlogFragment.newInstance(position + 1)).addToBackStack("blog").commit();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何用onCatalogFragmentInteraction接口中的方法替换片段中的新片段:
/** Methods for interaction with list items*/
@Override
public void onCatalogFragmentInteraction(String id){
//pop previous
getSupportFragmentManager().popBackStack("catalog", FragmentManager.POP_BACK_STACK_INCLUSIVE);
//add new
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, LessonsFragment.newInstance());
fragmentTransaction.addToBackStack("lessons");
fragmentTransaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
......这很好用:

但是当我从slididng菜单片段重叠移回片段时.

我相信问题在于正确的BackStack管理,但我无法弄清楚我做错了什么.另一个建议是,add/replace在这种情况下我需要以某种方式更好地使用.
我已经尝试从堆栈中删除名称.也许需要通过ID删除它们?
PS告诉是否需要更多代码.提前致谢.
Cha*_*nth 14
我认为你的所有片段都有透明的背景,或者你没有设置任何东西(所以默认是透明的).因此,当您在另一个片段上方添加/替换片段时,您可以看到下面的片段.因此,尝试为每个片段布局设置背景颜色.
| 归档时间: |
|
| 查看次数: |
9275 次 |
| 最近记录: |