我想替换片段并销毁先前的。
这是我的代码:
FragmentManager manager = getFragmentManager();
FragmentTransaction newT = manager.beginTransaction();
newT.replace(R.id.activity_content currentFragment, CE_TAG);
newT.commit();
我读过这篇文章:http://sapandiwakar.in/replacing-fragments/
我没有将片段放在后面的堆栈中,但是我的fragement没有被破坏!
onPause()
,onDestroy()
,onStop()
永远不会被调用。
感谢。
答案 0 :(得分:0)
尝试
Fragment f = new YOurFragment();
fragmentTransaction.remove(f).commit();
希望有所帮助
答案 1 :(得分:0)
尝试在提交事务后添加此行代码。
getChildFragmentManager().executePendingTransactions();
如果要用相同的标签替换片段,可能会导致重叠问题。此外,如果您的片段容器是LinearLayout
,则在替换后无法更新(仅根据我的经验)。
答案 2 :(得分:0)
即使片段不再可见,片段仍会保留在内存中。如果将其重新调用,则调用onCreateView
并重新创建片段的可视部分,但重用实际对象。来自Docs:
onDestroy()=您在活动开始前收到的最终通话 销毁。这可能是因为活动正在结束 (有人称之为finish(),或者因为系统是暂时的 销毁此活动实例以节省空间。您可以 使用isFinishing()方法区分这两种情况。
您应该考虑使用onDestroyView
,或者如果更适合您,请致电finish
。
http://developer.android.com/reference/android/app/Fragment.html