androidx報錯:java.lang.NoSuchFieldError: No field mActive of type Landroid/util/SparseArray

今天突然報了一個很奇怪的錯誤,跳轉Activity後,按返回鍵,就會崩潰,排查了半天,在此記錄一下,希望對後續遇到同樣的問題的童鞋有用。

java.lang.NoSuchFieldError: No field mActive of type Landroid/util/SparseArray;
 in class Landroidx/fragment/app/FragmentManagerImpl; 
 or its superclasses (declaration of 'androidx.fragment.app.FragmentManagerImpl' appears 
 in /data/app/com.adinnet.xlebike-nttDXl479eX57dOONE210A==/base.apk!classes2.dex)
        at androidx.fragment.app.FragmentationMagician.getActiveFragments(FragmentationMagician.java:153)
        at me.yokeyword.fragmentation.SupportHelper.getActiveFragment(SupportHelper.java:159)
        at me.yokeyword.fragmentation.SupportHelper.getActiveFragment(SupportHelper.java:131)
        at me.yokeyword.fragmentation.SupportActivityDelegate$1.run(SupportActivityDelegate.java:157)
        at me.yokeyword.fragmentation.queue.ActionQueue.handleAction(ActionQueue.java:53)
        at me.yokeyword.fragmentation.queue.ActionQueue.enqueueAction(ActionQueue.java:45)
        at me.yokeyword.fragmentation.queue.ActionQueue.access$000(ActionQueue.java:17)
        at me.yokeyword.fragmentation.queue.ActionQueue$1.run(ActionQueue.java:37)
        at android.os.Handler.handleCallback(Handler.java:794)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:176)
        at android.app.ActivityThread.main(ActivityThread.java:6651)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)

經排查後發現,和Android X的依賴項衝突有關。

方案一

根本原因是使用了第三方的Fragment的庫,和Android X的Fragment產生了兼容性問題,不使用第三方的Fragment庫即可 !

方案二

PS: 感謝評論區無無90的留言,給出了方案二:
是因爲引用了me.yokeyword:fragmentation:1.3.6,GitHub給出瞭解決方案,引用me.yokeyword:fragmentationx:1.0.1版本即可。 GitHub鏈接:https://github.com/YoKeyword/Fragmentation/issues/1196

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章