Android - 片段替换未更换

时间:2014-04-17 14:33:36

标签: android android-fragments

我想替换片段并销毁先前的。

这是我的代码:

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()永远不会被调用。

感谢。

3 个答案:

答案 0 :(得分:0)

尝试

Fragment f = new YOurFragment(); 

fragmentTransaction.remove(f).commit();

希望有所帮助

答案 1 :(得分:0)

尝试在提交事务后添加此行代码。

getChildFragmentManager().executePendingTransactions();

选中executePendingTransactions

如果要用相同的标签替换片段,可能会导致重叠问题。此外,如果您的片段容器是LinearLayout,则在替换后无法更新(仅根据我的经验)。

答案 2 :(得分:0)

即使片段不再可见,片段仍会保留在内存中。如果将其重新调用,则调用onCreateView并重新创建片段的可视部分,但重用实际对象。来自Docs:

  

onDestroy()=您在活动开始前收到的最终通话   销毁。这可能是因为活动正在结束   (有人称之为finish(),或者因为系统是暂时的   销毁此活动实例以节省空间。您可以   使用isFinishing()方法区分这两种情况。

您应该考虑使用onDestroyView,或者如果更适合您,请致电finish

http://developer.android.com/reference/android/app/Fragment.html