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

Android PagerAdapter 無法使用:缺少支援庫 Jar 包解決方案

     編輯:程式設計疑難解答

Android 開發中使用 `ViewPager` 時,`PagerAdapter` 及其子類(`FragmentPagerAdapter`、`FragmentStatePagerAdapter`)屬於 **Android Support Library**(現 AndroidX),不包含在核心 SDK 中。直接使用會報 `ClassNotFoundException` 或編譯錯誤。本文說明正確導入依賴的步驟。

錯誤現象

  • 程式碼中 `import android.support.v4.view.PagerAdapter;` 紅線報錯。
  • 執行時 `java.lang.ClassNotFoundException: android.support.v4.view.PagerAdapter`。
  • Gradle 同步失敗:`Could not find support-v4.jar`。

解決方案:Gradle 依賴管理(標準做法)

1. 專案級 `build.gradle` 確認倉庫

allprojects {
    repositories {
        google()        // AndroidX 必須
        jcenter()       // 舊版支援庫
        mavenCentral()
    }
}

2. 模組級 `build.gradle` 加入依賴

現代專案(AndroidX,API 28+):

dependencies {
    implementation 'androidx.viewpager:viewpager:1.0.0'
    implementation 'androidx.fragment:fragment:1.6.2' // 含 FragmentPagerAdapter
}

舊專案(Support Library,已停止更新):

dependencies {
    implementation 'com.android.support:support-v4:28.0.0' // 含 PagerAdapter
    implementation 'com.android.support:appcompat-v7:28.0.0'
}

3. 同步專案

點擊 Android Studio 右上角 Sync Now,或執行 `./gradlew build --refresh-dependencies`。

手動導入 Jar 包(不推薦,僅適用極舊 Eclipse 專案)

  1. 下載 `support-v4-28.0.0.aar`(從 Maven Central 或 SDK Manager `extras/android/m2repository`)。
  2. 將 `.aar` 改名為 `.zip` 解壓,取出 `classes.jar` 重命名為 `support-v4.jar`。
  3. 放入專案 `libs/` 目錄。
  4. Eclipse:右鍵專案 → Build Path → Add External Archives。
    Android Studio:`build.gradle` 加入 `implementation files('libs/support-v4.jar')`。

缺點:無法自動處理傳遞依賴(如 `support-annotations`、`support-compat`),易導致 `NoClassDefFoundError`。

遷移至 AndroidX(長期維護專案必做)

  1. Android Studio 選單:Refactor → Migrate to AndroidX。
  2. 勾選「Backup project as Zip」,點擊 Migrate。
  3. 自動修改 `gradle.properties` 加入:
    `android.useAndroidX=true`
    `android.enableJetifier=true`
  4. 所有 `android.support.*` 套件自動重寫為 `androidx.*`。

常見坑點

  • 版本衝突:專案中同時引用 `support-v4:27.1.1` 和 `appcompat-v7:28.0.0`,強制統一版本號。
  • Fragment 版本:`FragmentPagerAdapter` 在 `fragment` 依賴中,僅引用 `viewpager` 不夠。
  • MinSDK 版本:AndroidX 要求 `minSdkVersion 14` 以上。

驗證是否成功

// 建立簡單測試
public class TestAdapter extends FragmentPagerAdapter {
    public TestAdapter(FragmentManager fm) { super(fm); }
    @Override public Fragment getItem(int pos) { return new Fragment(); }
    @Override public int getCount() { return 3; }
}

編譯通過且裝置上正常顯示滑頁,即代表依賴配置正確。

現代 Android 開發務必使用 Gradle 管理依賴,手動放 Jar 已成歷史。遷移至 AndroidX 可獲得持續更新與修復,避免在已停止維護的 Support Library 上踩坑。

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