今天主要說一下出現fragment重影的問題。
Activity 中的 onSaveInstanceState() 裏面有一句super.onSaveInstanceState(outState);,Google 對於這句話的解釋是 “Always call the superclass so it can save the view hierarchy state”,大概意思是“總是執行這句代碼來調用父類去保存視圖層的狀態”。通過註釋掉這句話,這樣主 Activity 因爲種種原因被回收的時候就不會保存之前的 fragment state,也可以成功解決重疊的問題。
注意:要把這個方法寫在你的homeActivity裏面,也就是你寫底部按鈕和加載fragment的頁面
如圖:這樣就可以解決這個問題了。
//解決fragment
@SuppressLint("MissingSuperCall")
@Override
public void onSaveInstanceState(Bundle outState) {
//如果用以下這種做法則不保存狀態,再次進來的話會顯示默認的tab
// super.onSaveInstanceState(outState);
}