android中fragment的4个小问题

1. 清空fragment回退栈

int count = getActivity().getSupportFragmentManager().getBackStackEntryCount();

 

BackStackEntry backStack = getActivity().getSupportManager().getBackStackEntryAt(i);

 

getActivity().getSupportManager().popBackStackImmediate(****, 0 or 1)

 

即弹出Tag为****之上的所有(包括自身)的fragment

 

第二个参数只能是0或者1(POP_BACK_STACK_INCLUSIVE)

 

注意: 当第一个参数为null时,第二个参数为0时候:

经测试,回退站中的fragment个数减少了一个

当第二个参数为1时候:

会弹出所以回退栈fragment回退栈的个数为0

 

2.对当前的fragment进行压栈处理

使用fragment的时候,我们为了在界面跳转的时候保存当前界面,经常对fragment进行压栈处理

fragmentManager.beginTransaction().addToBackStack(null)

 

3.尽量使用add hide show来替换replace

 

4.fragment重叠问题

fragment状态保存,当系统内存不足的时候,fragment宿主Activity回收的时候,

fragment并没有被收回,Activity被系统回收的时候,会主动调用onSaveInstance()方法来

保存视图层(View Hierarchy),所以当 Activity再次创建的时候,再次实例化出现在Activity

导致fragment重叠

 

public void onSaveInstanceState(Bundle outState) {

                    boolean pop = mFragmentManager.popBackStackImmediate(null, 1);

                    super.onSaveInstanceState(outState);

        }        }

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页