我有一个Activity
。 Activity
有两个Fragment
。
片段A是菜单。片段B是细节。
我尝试在片段B中创建其他片段C,因此,Activity
中有3个片段。
我尝试将片段B替换为片段D。
我猜片段B和C已经死了。
但这些碎片还活着。 Just Fragments是onDestroyView()
州。我想要onDestroy()
或onDetach()
。
我该如何处理Fragments.onDestroy()
或onDetach()
?我无法销毁或更改Activity
。
答案 0 :(得分:66)
如果您不手动删除这些片段,它们仍会附加到活动中。你的活动没有被破坏所以这些碎片也是如此。 要删除(破坏)这些片段,您可以调用:
fragmentTransaction.remove(yourfragment).commit()
希望对你有所帮助
答案 1 :(得分:10)
试试这个
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
FragmentManager manager = ((Fragment) object).getFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove((Fragment) object);
trans.commit();
super.destroyItem(container, position, object);
}
答案 2 :(得分:5)
如果你在片段中,你需要调用它。您的片段需要是被调用的片段。输入代码:
getFragmentManager().beginTransaction().remove(yourFragment).commitAllowingStateLoss();
或者如果您使用supportLib
,则需要致电:
getSupportFragmentManager().beginTransaction().remove(yourFragment).commitAllowingStateLoss();
答案 3 :(得分:0)
如果您在片段中,请使用它。
@Override
public void onDestroy() {
super.onDestroy();
getFragmentManager().beginTransaction().remove((Fragment) youfragmentname).commitAllowingStateLoss();
}
答案 4 :(得分:0)
在 kotlin 中,我们可以在 Fragment 的任何位置执行此操作
activity?.run {
supportFragmentManager.beginTransaction().remove(this@MyFragment)
.commitAllowingStateLoss()
}
答案 5 :(得分:-3)
用于 Kotlin
appCompatActivity?.getSupportFragmentManager()?.popBackStack()