-1

enter image description here我有两个片段一个列表和一个细节片段。在列表项上单击我隐藏列表片段并添加详细片段后面的按详细片段会自动弹出我只是调用super.onBackPressed()但问题是它正在创建如此多的细节片段引用导致内存泄漏内存泄漏片段trasaction

以下是我的代码

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); 
    ft.hide(this); 
    ft.add(containerId, detailFragment, "detail"); 
    ft.addToBackStack("detail"); 
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
    ft.commit(); 

我不希望查看重新创建视图时,用户按下后退按钮上的细节片段这就是为什么我上面的方法使用。还与当前实现,当我按后退按钮recylerview滚动possition和其他数据我没有保存

我的活动只是下面的代码它膨胀名单片段

if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.FragmentContainer1, ListFragment.newInstance(), TAG).commit(); 

    } 
+0

请发布完整的活动代码。 – Thirumalvalavan

+0

'它正在创建如此多的细节片段引用导致内存泄漏'你对此有多确定?你从哪里看到这些泄漏? – azizbekian

+0

增加了活动代码和内存分配。看看计数DealFragment – apk

回答

0

我认为你做错了什么是你每次都一次又一次地通过调用add方法将碎片容器:

在你的情况,你应该使用replace方法并添加列表片段到堆栈中。下面是你应该如何开始你的细节片段:

FragmentManager fm = getFragmentManager(); 

    fm.beginTransaction() 
    .replace(R.id.container, new DetailFragment()) 
    .addToBackstack(null) 
    .commit(); 

要返回到您的列表片段,这是在返回堆叠,只要致电:

fm.popBackStack(); 

编辑:

尝试使用此方法显示列表的片段:

protected void displayListFragment() { 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 

    if (listFragment.isAdded()) { 
     ft.show(listFragment); 
    } else { 
     ft.add(R.id.flContainer, listFragment, "ListFragment"); 
    } 

    if (detailFragment.isAdded()) { 
     ft.remove(detailFragment); 
    } 

    ft.commit(); 
} 

这显示你的细节片段:

protected void displayDetailFragment() { 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 

     if (listFragment.isAdded()) { 
      ft.hide(listFragment); 
     } 

     if (!detailFragment.isAdded()) { 
      ft.add(R.id.flContainer, detailFragment, "DetailFragment"); 
     } 

     ft.commit(); 
    } 
+0

这样做并不会恢复回收站视图滚动位置和其他的东西 – apk

+0

你说,你并不需要保存滚动位置“还与当前的实现,当我按后退按钮recylerview滚动possition和其他数据我没有救” – Umarov

+0

我说与cureent实施,如果我添加替换滚动状态丢失 – apk