2015-03-31 69 views
0

我有一个FragmentMapView在里面。我想补充Fragment到容器下面的代码:MapView的片段永远不会从FragmentManager中删除

Fragment fragment = new MyLocationFragment() 
    String tag= fragment.getClass().getName(); 

    FragmentTransaction transaction = fm.beginTransaction(); 
    transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, 
      R.anim.slide_in_left, R.anim.slide_out_right); 
    transaction.replace(R.id.container, fragment, tag); 
    transaction.addToBackStack(null); 
    transaction.commit(); 

现在,当用户按下回来了,这Fragment应该从FragmentManager删除。但是,如果执行此代码:

Fragment fragment = getSupportFragmentManager().findFragmentByTag(MyLocationFragment.class.getName()); 

它永远不会返回null,即使我更换同一容器中的其他片段。我能做些什么来从FragmentManager删除Fragment?我在这里做错了什么?

+0

任何人有什么时候的片段应该从FragmentManager被删除的任何想法? – SilentKnight 2015-03-31 06:34:51

+0

它被破坏后应该被移除。碎片与MapView被破坏,但从来没有从FragmentManager中删除,真的很奇怪! – jimmy0251 2015-03-31 06:44:29

+0

但是你的代码中的删除行在哪里? – Piyush 2015-03-31 07:07:20

回答

0

当一个活动被破坏时,其FragmentManager保存了它的碎片列表。当活动重新创建时,新的FragmentManager将检索列表并重新创建列出的片段,以便像以前一样创建所有内容。

[参考预定的 “Android编程大书呆子牧场指南” P150]

所以,你应该从fragmentmanager删除片段。 请参考这个问答&一个Remove old Fragment from fragment manager

你的问题也许复制How to get a Fragment to remove itself, i.e. its equivalent of finish()?