2015-04-12 27 views
0

弹出后台堆栈后,我的碎片未被垃圾收集?他们的onStop()方法被调用,但不是他们的onDestroyView()onDestroy()方法。弹出后台堆栈后,我的碎片未被垃圾收集

如何确保调用其方法onDestory()

我犯了一个制作“上帝活动”的错误,以及我所有的片段.replace()单个容器FrameLayout。比方说,我有四个片段,FragAFragBFragC,并FragD,用堆栈中,看起来是这样的:

FragA - >FragB - >FragC - >FragD

FragD is the only visible fragment. Then, I call . popBackstack()`

FragA - >FragB - >FragC = = FragD

FragD已被分离,并且FragC现在对用户可见。当尝试实例化新的FragD(来自FragC)时,它已创建,我的堆上有两个实例FragD。而第一个FragD实例的onDestroyView()未被调用。

我该如何解决这个问题?

编辑:这里有一个如何我currecntly在我的UI更换片段的例子:

getSupportFragmentManager().beginTransaction() 
      .replace(R.id.container, new SearchScreenFragment()) 
      .addToBackStack(null) 
      .commit(); 

EDIT2:onDetach()没有被称为要么。

回答