为什么我的片段没有被破坏

时间:2014-05-23 12:51:29

标签: android android-fragments

我尝试用Fragment B替换Fragment A,但onDestroy() B未调用Fragment方法。

广播接收器未注册,线程在替换片段之前被终止。

FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transac = manager.beginTransaction();
transac.replace(R.id.content_fragment_A, fragmentB, myTAG);
transac.commit();

为什么我的Fragment A没有被销毁?

2 个答案:

答案 0 :(得分:2)

我会更多地了解片段活动生命周期

http://developer.android.com/guide/components/fragments.html#Lifecycle

The lifecycle of a fragment (while its activity is running)

何时将新片段添加到现有ViewGroup,替换功能:

  

替换添加到容器的现有片段。这是   与当前所有人调用remove(Fragment)基本相同   添加了使用相同containerViewId添加的片段   add(int,Fragment,String)与此处给出的参数相同。

和删除

  

删除现有片段。如果它被添加到容器中,则为其视图   也从该容器中删除。

从这个术语来看,我假设onDestroyView()正在被调用,而且不需要onDestory。

答案 1 :(得分:1)

调用Fragment onDestroy()后,系统会调用Activity onDestroy()Fragments在您的方案中,您只是替换Activity,但您还没有销毁Activity。如果您要检查此操作,请在替换Fragment后尝试销毁fragmentA,同时应调用fragmentBonDestroy() {{1}}。