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

Android Fragment 切換報錯:v4 包與系統包混用

     編輯:程式設計疑難解答

錯誤現象

在 Tab 切換邏輯中,方法參數使用 android.support.v4.app.FragmentTransaction,但 if 語句內調用 hide() 時傳入的仍是 android.app.FragmentTransaction,導致類型不匹配編譯報錯。

根本原因

項目中同時存在兩種 Fragment 實現:

  • 系統包:android.app.Fragment(API 11+)
  • 支持庫:android.support.v4.app.Fragment(現已遷移至 AndroidX)

若 Activity 繼承 FragmentActivity 或使用 getSupportFragmentManager(),必須全程使用 v4 包下的 Fragment 及 FragmentTransaction。

解決方法

  1. 統一所有 Fragment 類繼承 android.support.v4.app.Fragment。
  2. 所有事務操作使用 FragmentTransaction ft = getSupportFragmentManager().beginTransaction();。
  3. 檢查導入語句,移除 import android.app.Fragment*。

建議遷移至 AndroidX(androidx.fragment.app.Fragment)以獲得長期維護。

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