2015-03-31 71 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()?

相關問題