我尝试用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没有被销毁?
答案 0 :(得分:2)
我会更多地了解片段活动生命周期
http://developer.android.com/guide/components/fragments.html#Lifecycle
何时将新片段添加到现有ViewGroup,替换功能:
替换添加到容器的现有片段。这是 与当前所有人调用remove(Fragment)基本相同 添加了使用相同containerViewId添加的片段 add(int,Fragment,String)与此处给出的参数相同。
和删除
删除现有片段。如果它被添加到容器中,则为其视图 也从该容器中删除。
从这个术语来看,我假设onDestroyView()正在被调用,而且不需要onDestory。
答案 1 :(得分:1)
调用Fragment
onDestroy()
后,系统会调用Activity
onDestroy()
。Fragments
在您的方案中,您只是替换Activity
,但您还没有销毁Activity
。如果您要检查此操作,请在替换Fragment
后尝试销毁fragmentA
,同时应调用fragmentB
和onDestroy()
{{1}}。