天天看點

android解決Fragment重影問題

當你使用 單Activity + 多Fragment 設計界面時應該會遇到多個Fragment同時顯示,如果你最上層 Fragment不透明就會看到下面一層,就是所謂的重影如圖:

android解決Fragment重影問題

出現這種情況一般在 Activity重新建立複現,其原因是 Activity重建的時候,FragmentManager 沒有重建,而我存儲的 Fragment 對象随着 Activity對象銷毀,不過按理說前一個 Activity View銷毀了不應該顯示出來才對,

所有我的解決辦法是在 add Fragment 的時候添加一個 Tag 

add(@IdRes int containerViewId, Fragment fragment, @Nullable String tag);
           

然後在建立的時候先用 findFragmentByTag 查找 Fragment對象,存在則不建立,這樣還可以避免記憶體洩漏

Fragment f = getSupportFragmentManager().findFragmentByTag(tag);
if(f != null)
	pages[id] = f;
else {
	try {
		pages[id] = (Fragment) PAGE_CLS[id].newInstance();
	} catch (Exception e) {}
}
           

于是問題解決