首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

解決 Fragment 與 ViewPager 嵌套時第二次不顯示的問題

     編輯:程式設計綜合問答

問題背景

在 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 博客

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved