在 Android 開發中,當使用 ViewPager 嵌套 Fragment 時,常會遇到一個經典問題:第一次加載 Fragment 正常顯示內容,但切換頁面後再返回,Fragment 卻變成空白不顯示任何內容。
這是因為在 onCreateView() 方法中,第二次進入時會重複調用,導致重新 new 一個 PagerAdapter,使得子 Fragment 的視圖無法正確附加到容器中。系統並不會自動移除舊視圖,造成視圖層級混亂。
在 onCreateView() 方法開頭加入視圖復用邏輯:若視圖已存在且已有父容器,則先從父容器移除,再直接返回該視圖,避免重複創建。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null) {
parent.removeView(view);
}
return view;
}
view = inflater.inflate(R.layout.your_layout, container, false);
// 初始化控件等操作
return view;
}
出處:CSDN 博客